Использование \b в регулярных выражениях C # не работает?

StackOverflow https://stackoverflow.com/questions/2449307

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top