Python 贪婪的正则表达式问题

Python regular expression problem with greedy

我正在学习在线课程,但我对正则表达式有疑问。

来自“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))

这个 returns "by_Anayah" 所以 "by_" 部分给我一些问题...

我知道吗?因为不贪心,但是无论我尝试插入 ?,我都得不到我想要的东西。

感谢您的帮助:)

这是因为 \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 demo and the regex demo