1

我想知道为什么以下正则表达式不匹配。

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' 有什么可能会导致这个问题吗?

4

2 回答 2

3

引号不是单词字符,因此 \b 如果存在则不会是匹配项。引号前没有单词字符;因此,在引用之前,单词字符和非单词字符之间没有过渡。所以,不匹配。

从您的评论中,您试图从字符串中删除单词字符。最直接的方法是\w用空字符串替换:

string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);
于 2010-03-15T18:08:41.603 回答
0

你期待一个空格。它没有找到一个。代替

string query = "\"1 2\" 3";

string query = "\" 1 2 \" 3";

你会明白我的意思。

于 2010-03-15T18:04:37.197 回答