Использование \b в регулярных выражениях C # не работает?
-
20-09-2019 - |
Вопрос
Мне интересно, почему следующее регулярное выражение не совпадает.
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 не будет совпадением, если она там есть.Перед цитатой нет символа слова;итак, перед цитатой нет перехода между словесными символами и несловесными символами.Итак, совпадения нет.
Судя по вашему комментарию, вы пытаетесь удалить символы word из строки.Самый простой способ сделать это - заменить \w
с пустой строкой:
string repl = Regex.Replace(query, "\w", "", RegexOptions.CultureInvariant);
Другие советы
вы ожидаете увидеть пробел.это не значит найти ни одного.заменить
string query = "\"1 2\" 3";
с
string query = "\" 1 2 \" 3";
и вы поймете, что я имею в виду.
Не связан с StackOverflow