Номер регулярного выражения Python или пробел до и после строки

1

Я изучаю регулярные выражения и имею под вопросом.

Я сослался на страницу и получил информацию ниже

\b Соответствует пустой строке, но только в начале или конце слова. Слово определяется как последовательность буквенно-цифровых символов или символов подчеркивания, поэтому конец слова обозначается пробелом или буквенным или несимвольным символом. Обратите внимание, что формально \b определяется как граница между символом \w и a\W (или наоборот) или между \w и началом/концом строки, поэтому точный набор символов, считающийся буквенно-цифровым, зависит от по значениям флагов UNICODE и LOCALE. Например, r '\ bfoo\b' соответствует 'foo', 'foo.', '(Foo)', 'bar foo baz', но не 'foobar' или 'foo3'. Внутри диапазона символов \b представляет символ обратного пробела для совместимости с строковыми литералами Pythons.

Код:

import re

abc="A \ncat and a rat"+ "\ncan't be friends."
print (abc)
if re.search(r'\bcat\b',abc):
    print ("Found")
else:
    print ("not found")

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

Поэтому '1cat4', 'cat', '1cat ', ' cat ', '(cat)' должны возвращаться положительно, когда я ищу 'cat'.

Как мне обновить код?

  • 1
    Почему вы хотите, чтобы 'cat' и '(cat)' совпали? Там нет ни чисел, ни пробелов до и после cat .
  • 0
    Почему бы вам просто не проверить, есть ли 'cat' in str_ если вы просто хотите 'cat' in str_ соответствие, если следующий содержит вашу специальную строку. Не похоже, что есть строгие критерии, приведенные в примере с «(кошкой)».
Показать ещё 2 комментария
Теги:

1 ответ

2
Лучший ответ

Похоже, вы хотите найти любого кота, окруженного неалфавитными символами или в начале или конце текста:

abc="cat. A \ncat and a rat\ncan't be friends, how about 1cat23 and concatenate?"
re.findall(r'(?:[^a-zA-Z]|^)(cat)(?:[^a-zA-Z]|$)',abc)
#['cat', 'cat', 'cat']

Вот контексты найденных кошек:

re.findall(r'(?:[^a-zA-Z]|^)cat(?:[^a-zA-Z]|$)',abc)
#['cat.', '\ncat ', '1cat2']

К сожалению, это регулярное выражение не распознает стада кошек ("catcat", "cat cat" и т.п.). Если это проблема, вы можете добавить дополнительные предложения в регулярное выражение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню