Регулярное выражение Слово Граница и специальные символы - PullRequest
4 голосов
/ 14 июля 2010

У меня есть регулярное выражение для экранирования всех специальных символов в строке поиска.Это прекрасно работает, однако я не могу заставить его работать с границами слов.Например, для стога сена

add +

или

add (+)

и иглы

+

регулярное выражение /\+/gi соответствует значению "+".Однако регулярное выражение /\b\+/gi не делает.Любые идеи о том, как заставить это работать?

Используя

add (plus)

в качестве стога сена и /\bplus/gi в качестве регулярного выражения, это отлично подходит.Я просто не могу понять, почему у сбежавших персонажей возникают проблемы.

Ответы [ 3 ]

5 голосов
/ 14 июля 2010

\b - это утверждение нулевой ширины : оно не потребляет никаких символов, оно просто утверждает, что определенное условие выполняется в данной позиции.Граница слова утверждает, что позиции предшествует либо символ слова, за которым не следует ни один, либо за ним следует символ слова, а не перед ним.(«Символ слова» - это буква, цифра или знак подчеркивания.) В вашей строке:

add +

... в начале есть граница слова, так как a не предшествуетсимвол слова, и один после второго d, потому что за ним не следует символ слова.\b в вашем регулярном выражении (/\b\+/) пытается найти соответствие между пробелом и +, что не работает, поскольку ни один из них не является символом слова.

1 голос
/ 18 ноября 2010

Границы являются очень условными утверждениями;то, что они привязывают, зависит от того, к чему они прикасаются.См. этот ответ для подробного объяснения, наряду с тем, что еще вы можете сделать, чтобы справиться с ним.

1 голос
/ 14 июля 2010

Попробуйте изменить его на:

/\b\s?+/gi

Edit:

Расширьте эту концепцию настолько, насколько вы хотите Если вы хотите первый + после любой границы слова:

/\b[^+]*+/gi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...