Python регулярное выражение Понимание границы "\ b" - PullRequest
1 голос
/ 05 апреля 2020

ввод:

- "example (.com)"

вывод:

- "example"

Что я пробовал

import re
pattern=re.compile(r'\b\([\W\w]+\)\b')
#pattern=re.compile(r'\([\W\w]+\)')
print(pattern.sub("","example (.com)"))

Это не сработает, но если я удалю \b, то это отлично работает - почему?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Выясните, что означает \b:

(?:(?=\w)(?<!\w)|(?<=\w)(?!\w))

То есть либо символ слова впереди, а не сзади, или наоборот. Символ слова (\w) означает [A-Za-z0-9_] и не включает ( или ), поэтому между пробелом и скобками нет границы слова.

0 голосов
/ 05 апреля 2020

( не является границей слова, поэтому \b не будет соответствовать ей. Вместо этого вы можете использовать \B для соответствия пробелу

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