c# - 正则表达式 : take string literally with special re-characters

标签 c# regex

也许是简单的问题..

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' 匹配......

谢谢。

最佳答案

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

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);

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

关于c# - 正则表达式 : take string literally with special re-characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7038406/

相关文章:

c# - 如何从mysql数据库导入数据到datagridview

c# - 如何使用 Protocol Buffer 的扩展来维护 'general' 消息

c# - 如何像Linqpad一样将linq结果导出到excel

c# - 正则表达式匹配多个组

c# - 在 C# 中,如何通过 Regex.Replace() 函数获取所有替换的开始/结束索引

Java REGEX .replaceall() 不适用于特定 JSON 对象(转换为字符串)

c# - asp.net c# 中的正则表达式

c# - LINQ 查询中的 InvalidCastException

regex - 将全角字符转换为半角字符

PHP mb_ereg_replace 不替换而 preg_replace 按预期工作