Регулярное выражение терпит неудачу на Unicode - PullRequest
0 голосов
/ 15 марта 2011

Я пытаюсь найти строку "C #" в тексте, используя php и reg exp.

Я использую

\bc\x{0023}\b

Но не работает вообще.

\bc\x{0023} 

работает, но это не решение для меня

Любая подсказка?

1 Ответ

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

Это потому, что escape-последовательность \b означает границу слова.Слово определяется в соответствии с руководством по PHP следующим образом: « Символ« слово »- это любая буква или цифра или символ подчеркивания, то есть любой символ, который может быть частью« слова »Perl. ".

Граница слова означает границу между словом и несловом.Другими словами, между символом, который является символом слова, и символом не является символом слова.Проблема в том, что # не является символом слова.Таким образом, если за # не следует символ слова, #\b никогда не будет соответствовать.

Возможно, вам следует более четко определить с помощью классов символов то, что вы хотите.Например, /\bc#(?![a-z])/i (то есть C #, за которым не следует диапазон символов az)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...