2016-05-30 64 views
-1

我使用的是正则表达式模式"MilliSeconds\s\&lt;",并尝试与输入"MilliSeconds <",但每次我的正则表达式匹配是越来越无法比较。谁能说出这里有什么问题?其次反斜线大于和小于C#正则表达式符号

毫秒,&lt;

string value = @"MilliSecs <Test Run"; 
string pattern = @"MilliSecs\s\&lt;"; 

Match mtchObj = Regex.Match(value,pattern); 

if(mtchObj.Success) 
{ 
    MessageBox.Show("Matched"); 
} 

我的哪个输入字符串是没有得到与模式匹配?

+2

无需转义'<': - 'MilliSeconds \ s <' – rock321987

+1

将更多的代码告诉正在发生的事情和您的期望.. – rock321987

+0

转义斜线 – karthik

回答

3

注意,正则表达式引擎不知道XML的转义字符串,并&lt;没有一个&lt;字符串和<人物站在两个。换句话说,这些实体对于正则表达式引擎并不相同。

看来你可以修改pattern。请注意,这是可能的,以配合交替的帮助,无论是<&lt;分组

@"MilliSeconds\s(?:&lt;|<)" 
       ^^^^^^^^^^ 

所以,(?:&lt;|<)是尝试匹配&lt;非捕获组,如果没有找到,<被尝试。

1

使用简单的string pattern = @"MilliSecs\s<";,在这个正则表达式中没有必要转义<,因为它没有特殊的含义。你的代码应该是:

string value = @"MilliSecs <Test Run"; 
string pattern = @"MilliSecs\s<"; 

Match mtchObj = Regex.Match(value,pattern); 

if(mtchObj.Success) 
{ 
    MessageBox.Show("Matched"); 
} 
+0

但我的模式写着“\ <”不是符号“<”,也无法改变我的输入文件 – karthik

+2

如果你给我们您的原始数据,所以我们可以尝试一下呢? @karthik –

+0

我的模式看起来像这样。我会做初始化和结束字符串比较,如果匹配继续进行正则表达式比较。会发生什么是我的字符串比较经过,但我的正则表达式失败? – karthik