【问题标题】:Python regular expression problem with greedy贪婪的Python正则表达式问题
【发布时间】:2019-07-30 19:16:11
【问题描述】:

我正在学习在线课程,但我遇到了正则表达式问题。

来自“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_”部分会给我带来一些问题......

我知道吗?因为不贪心,但无论我尝试插入什么?,我永远得不到我想要的。

感谢您的帮助:)

【问题讨论】:

    标签: regex python-3.x regex-greedy


    【解决方案1】:

    这是因为 \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 demoregex demo

    【讨论】:

    • 谢谢!我可以碰碰运气,问你的答案和 : r'<i>([^</i>]+)\.html' 有什么区别
    • 可能是[^_]。这一切都取决于要求。
    • 这正是我要写的……我正在战斗/学习评论格式系统
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多