C#正则表达式中的大于和小于符号

时间:2016-05-30 12:01:08

标签: c# regex

我正在使用正则表达式模式"MilliSeconds\s\&lt;"并尝试与输入"MilliSeconds <"进行比较,但每次我的正则表达式匹配失败时。谁能说出这里有什么问题?

MilliSeconds后跟反斜杠和&lt;

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

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

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

我的输入字符串与模式没有匹配?

2 个答案:

答案 0 :(得分:3)

请注意,正则表达式引擎不知道XML转义字符串,&lt;不支持&lt;字符串和<字符。换句话说,这些实体对于正则表达式引擎来说并不相同。

可以修改pattern。请注意,可以在交替分组的帮助下匹配<&lt;

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

因此,(?:&lt;|<)是一个非捕获组,尝试匹配&lt;,如果找不到,则尝试<

答案 1 :(得分: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");
}