2012-05-30 2 views
1

나는 (등호가없는) 등호의 왼쪽에 아무것도 캡처하려고합니다.정규 표현식 : "="왼쪽에있는 텍스트를 캡쳐하는 방법

MSG_TYPE=X12S4F3S3\r\nASID=123456789012\r\n

것은 내가 (\w*)= 사용했지만이 등호와이 .net위한 것입니다 /n

의 일반적인 n을 선택하는 것 같다.

죄송합니다. 텍스트가 RTF 문서에 포함되어 있음을 잊어 버렸으므로 DocumentRanges에서 CharacterProperties를 만들려고하므로 기본 하위 문자열 기능을 사용할 수 없습니다.

Regex regEx = new Regex (@"(\w*)="); 
DocumentRange [] docRanges = m_rtfTranslation.Document.FindAll (regEx); 

for (int nIndex = 0; nIndex < docRanges.Length; nIndex++) 
{ 
    CharacterProperties cp = m_rtfTranslation.Document.BeginUpdateCharacters (docRanges [nIndex]); 
    cp.ForeColor = Color.SlateBlue; 
    m_rtfTranslation.Document.EndUpdateCharacters (cp); 
} 
+1

-1 : '정규식은 동등한 단어를 삭제할 수 없습니다.'라는 문장이 '이 동등한 단어를 찾은 것 같습니다.'라는 문구는 실제로 일치하지 않습니다. 응답에 최소한의 노력을 기울이기 전에 최소한의 노력 만하면됩니다. – ANeves

+0

그건 유효한 문장이야. 나는 평등을 원하지 않는다. 그리고 내가 뭘 시도했는지는 내가 원하지 않는 동등한 것을 선택한다. –

답변

3

정말 이에 대한 정규식이 필요합니까? 간단한 문자열이 작동 것이다 :

var lhs = msg.Substring(0, msg.IndexOf("=")) // MSG_TYPE 

당신이 일치하거나 캡처해야하는 경우 :

var lhs = Regex.Match(msg, @"(.*)="); 
Console.WriteLine(lhs.Groups[1].Value); 

당신은 =의 왼쪽 대체 할 정규 표현식을해야하는 경우 :

var lhs = Regex.Replace(msg, @"(.*)=", "<green>$1</green>"); 
Console.WriteLine(lhs); 

수익률을 :

<green>MSG_TYPE</green>X12S4F3S3\r\n<green>ASID</green>123456789012\r\n 
+0

이 문서는 RTF 문서 안에 있음을 언급해야합니다. 나는 equals의 왼쪽면을 채색하여 사용자에게보다 시각적으로 보이도록 노력하고 있습니다. –

+0

@ANeves 그래, 지금 봤어. – alexn

+0

그건 내가 대체하고 싶은 것이 아니에요. 일치시키고 싶습니다. 좀 더 명확하게하기 위해 질문을 확장하겠습니다. –

0
MessageBox.Show(Regex.Replace(
    @"MSG_TYPE=X12S4F3S3\r\nASID=123456789012\r\n", 
    @"([^=]+)(=.*?\\r\\n)", 
    @"[color]$1[/color]$2" 
));