Почему граница слов не работает в python3?

Почему этот работает с модулем регулярных выражений (пере) в Python.

import re
x = 'if a + b > 0 && a - b < 0:'
print(re.search(r"\s&&\s", x))

output:<re.Match object; span=(12, 16), match=' && '>

А этого нет?

import re
x = 'if a + b > 0 && a - b < 0:'
print(re.search(r"\b&&\b", x))

output:None

1 ответ

Решение

Утверждения границ слова (\b) описывают переход между словесными и несловесными символами, а не между пробелами и не пробелами. Символы слова представляют собой буквенно-цифровые символы плюс подчеркивание (_). Но поскольку и пространство, и& не являются символами слов, \bне может совпадать при этом переходе; вы бы соответствовали, только если& у вас был сосед, похожий на слово, когда вы думали, что ищете соседа, не похожего на слово.

Другие вопросы по тегам