正则表达式:使用特殊的re字符直接匹配字符串

5
也许是一个简单的问题...
String text = "fake 43 60 fake";
String patt = "[43.60]";

Match m = Regex.Match(text, patt)

在这种情况下,m.Success = true是因为点可以替换任何字符(包括空格)。但我必须按字面意思匹配patt中的字符串。

当然,我可以在patt中点前面使用'\'。

String patt = @"[43\.60]";

所以m.Success = false,但在正则表达式世界中有更多特殊字符。
我的问题是,如何使用正则表达式使字符串按其设置文字字面意义进行匹配。 因此,“43.60”必须与“43.60”完全匹配。“43?60”必须与“43?60”匹配....
谢谢。
1个回答

14
获得一个安全的正则表达式字面量:
string escaped = Regex.Escape(input);
例如,要匹配文字字面量[43.60]
string escaped = Regex.Escape(@"[43.60]");

提供一个内容为\[43\.60]的字符串。

您可以使用这个已经转义的内容来创建一个正则表达式,例如:

string find = "43?60";
string escaped = Regex.Escape(find);
bool match = Regex.IsMatch("abc 43?60", escaped);

请注意,在许多情况下,您可能希望将转义字符串与其他正则表达式片段组合起来以生成完整的模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接