我很奇怪,为什么下面的正则表达式不匹配。

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

,你就会明白我的意思。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top