Использование \ b в C # регулярных выражений не работает? - PullRequest
1 голос
/ 15 марта 2010

Мне интересно, почему следующее регулярное выражение не совпадает.

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', что может вызвать это?

Ответы [ 2 ]

3 голосов
/ 15 марта 2010

Цитата не является символом слова, поэтому \ b не будет совпадением, если оно там есть. Перед кавычкой нет символа слова; Таким образом, перед кавычкой нет перехода между символами слова и не-словами. Итак, нет совпадений.

Из вашего комментария вы пытаетесь удалить символы слова из строки. Самый простой способ сделать это - заменить \w пустой строкой:

string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);
0 голосов
/ 15 марта 2010

вы ожидаете пробел. он не находит. заменить

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

с

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

и вы поймете, что я имею в виду.

...