Проблема регулярного выражения Python с жадным - PullRequest
2 голосов
/ 08 марта 2019

Я слежу за онлайн-курсом, и у меня проблема с регулярным выражением.

Из "http://py4e -data.dr-chuck.net / known_by_Anayah.html " Я хотел бы извлечь только "Anayah"

Это моя попытка:

stringToParse = "http://py4e-data.dr-chuck.net/known_by_Anayah.html, we just want Anayah"
print(re.search(r'[_](\w+)\.html', stringToParse).group(1))

Это возвращает "by_Anayah", так что часть "by_" дает мне некоторые проблемы ...

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

Спасибо за любую помощь:)

1 Ответ

2 голосов
/ 08 марта 2019

Это потому, что \w также соответствует _ символам.Замените \w на [^\W_], который соответствует всем символам слова, кроме символов подчеркивания.

Использование

import re
stringToParse = "http://py4e-data.dr-chuck.net/known_by_Anayah.html, we just want Anayah"
print(re.search(r'_([^\W_]+)\.html', stringToParse).group(1))

См. Демонстрационную версию Python и демонстрационную версию regex .

...