题
我很奇怪,为什么下面的正则表达式不匹配。
string query = "\"1 2\" 3";
string pattern = string.Format(@"\b{0}\b", Regex.Escape("\"1 2\""));
string repl = Regex.Replace(query, pattern, "", RegexOptions.CultureInvariant);
请注意,如果删除了字边界字符(\ b)由pattern
,它匹配细。是否有一些关于“\ B”可能被绊倒这个吗?
解决方案
一个报价是不是一个字字符,所以\ B不能在一个匹配,如果它是存在的。有报价前没有字字符;所以,报价前,有字的字符和非单词字符之间没有过渡。所以,不匹配。
从您的评论你正试图从一个字符串中删除单词字符。最直接的方法来做到这将是一个空字符串替换\w
:
string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);
其他提示
你期待一个空格。 它没有找到一个。 取代
string query = "\"1 2\" 3";
与
string query = "\" 1 2 \" 3";
,你就会明白我的意思。
不隶属于 StackOverflow