我正在使用正则表达式模式"MilliSeconds\s\<"
并尝试与输入"MilliSeconds <"
进行比较,但每次我的正则表达式匹配失败时。谁能说出这里有什么问题?
MilliSeconds后跟反斜杠和<
string value = @"MilliSecs <Test Run";
string pattern = @"MilliSecs\s\<";
Match mtchObj = Regex.Match(value,pattern);
if(mtchObj.Success)
{
MessageBox.Show("Matched");
}
我的输入字符串与模式没有匹配?
答案 0 :(得分:3)
请注意,正则表达式引擎不知道XML转义字符串,<
不支持<
字符串和<
字符。换句话说,这些实体对于正则表达式引擎来说并不相同。
您可以修改pattern
。请注意,可以在交替和分组的帮助下匹配<
或<
:
@"MilliSeconds\s(?:<|<)"
^^^^^^^^^^
因此,(?:<|<)
是一个非捕获组,尝试匹配<
,如果找不到,则尝试<
。
答案 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");
}