正则表达式:使用特殊的重字符字符串

rob*_*pnl 5 c# regex

也许简单的问题..

String text = "fake 43 60 fake";
String patt = "[43.60]";

Match m = Regex.Match(text, patt)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,m.Success = true,因为点替换任何字符(也是空格).但我必须在patt中字面上匹配字符串.

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

String patt = @"[43\.60]";
Run Code Online (Sandbox Code Playgroud)

所以m.Success = false,但正则表达式世界中有更多特殊字符.

我的问题是,如何使用正则表达式,字符串将按字面设置.所以'43 .60'必须与'43 .60'完全匹配.'43?60'必须与'43?60'相匹配....

谢谢.

Mar*_*ell 14

要获得正则表达式安全文字:

string escaped = Regex.Escape(input);
Run Code Online (Sandbox Code Playgroud)

例如,要匹配文字 [43.60]:

string escaped = Regex.Escape(@"[43.60]");
Run Code Online (Sandbox Code Playgroud)

给出包含内容的字符串:\[43\.60].

然后,您可以使用此转义内容来创建正则表达式; 例如:

string find = "43?60";
string escaped = Regex.Escape(find);
bool match = Regex.IsMatch("abc 43?60", escaped);
Run Code Online (Sandbox Code Playgroud)

请注意,在许多情况下,您需要转义字符串与其他一些正则表达式片段组合在一起以构成完整的模式.