#python #regex
#python #регулярное выражение
Вопрос:
Это первый раз, когда я использую регулярные выражения с python, и я пытаюсь выяснить, почему он считает, что ошибка «AttributeError: объект ‘str’ не имеет атрибута ‘Match'»
Я делаю это в записной книжке Jupyter. Что я здесь делаю не так? Я вижу только один другой бесполезный вопрос с этой же ошибкой отсутствующего атрибута.
import re
grp = "Application: Company Name / 184010 - Application Development / 184010 - Contract Express"
rgx = "w *(?!.*-)"
res = grp.match(rgx)
print(res)
Комментарии:
1. Неправильный синтаксис . Либо
re.match(rgx, grp)
, либоre.compile(rgx).match(grp)
.2. Что вы пытаетесь сопоставить здесь?
3. Все слова после последнего тире @TimBiegeleisen
4. @meowgoesthedog спасибо!
5. @Timbiegeleisenкак ни странно, я не получаю совпадения, результат пока отсутствует в тестере регулярных выражений, который я использовал, он отлично соответствует.
Ответ №1:
Вы хотите использовать re.match, но это начинается с начала строки. Вместо этого вы могли бы использовать findall:
import re
grp = "Application: Company Name / 184010 - Application Development / 184010 - Contract Express"
rgx = "w *(?!.*-)"
res = re.findall(rgx, grp)
print(res) # ['Contract ', 'Express']
Если за ним также не должно быть косой черты, вы могли бы добавить ее в класс символов вместе с дефисом.
Обратите внимание, что для того, чтобы не совпадать с пробелом после слова, вы могли бы опустить пробел, за которым следует звездочка *
, из шаблона.
w (?!.*[-/])