Регулярное выражение Python соответствует всему слову - программирование
Подтвердить что ты не робот

Регулярное выражение Python соответствует всему слову

У меня возникли проблемы с поиском правильного регулярного выражения для сценария ниже:

Давайте скажем:

a = "this is a sample"

Я хочу совместить целое слово - например, match "hi" должен возвращать False, так как "hi" не является словом, а "is" должен возвращать True, так как нет альфа-символа слева и справа.

4b9b3361

Ответ 1

Try

re.search(r'\bis\b', your_string)

От документы:

\ b Соответствует пустой строке, но только в начале или конце слова.

Обратите внимание, что модуль re использует наивное определение слова как "последовательность буквенно-цифровых символов или символов подчеркивания", где "буквенно-цифровой" зависит от параметров локали или юникода.

Ответ 2

Попробуйте это с использованием границы слова в регулярном выражении:

>>> x="this is a sample"
>>> y="this isis a sample."
>>> regex=re.compile(r"\bis\b")  # For ignore case: re.compile(r"\bis\b", re.IGNORECASE)
>>> regex.findall(y)
[]
>>> regex.findall(x)
['is']

Надеюсь, что это поможет!

Ответ 3

Проблема с регулярным выражением заключается в том, что если строка hte, которую вы хотите найти в другой строке, имеет символы регулярного выражения, она становится сложной. любая строка с скобками не будет выполнена.

Этот код найдет слово

 word="is"
    srchedStr="this is a sample"
    if srchedStr.find(" "+word+" ") >=0  or \
       srchedStr.endswith(" "+word):
        <do stuff>

Первая часть условного поиска текста с пространством на каждой стороне, а вторая часть - в конце строки. Обратите внимание, что endwith является логическим, тогда как find возвращает целое число