【问题标题】:Extract text from Regular Expression?从正则表达式中提取文本?
【发布时间】:2013-10-23 07:00:38
【问题描述】:

我试图在正则表达式中获取一些匹配文本的结果,但它似乎不起作用。有谁知道可能出了什么问题?

import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>[^\>]+)>", text)
if match:
    print (match.group('brackets'))

这不打印任何内容,即找不到匹配项。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    这实际上是一个非常常见的错误——看起来你正在使用re.match,而你想使用re.searchre.match 只匹配给定文本的开头,而re.search 检查整​​个内容。

    import re
    text = "I want to match anything in <angle brackets>"
    match = re.search("\<(?P<brackets>[^\>]+)>", text)
    if match:
        print (match.group('brackets'))
    

    输出:

    'angle brackets'
    

    【讨论】:

    • 啊,成功了,我应该仔细阅读一下,谢谢!
    【解决方案2】:

    虽然@Tom Jacques 很好地回答了这个问题,但当我尝试时,问题和答案中显示的代码对我不起作用。以下代码有效:

    import re
    text = "I want to match anything in <angle brackets>"
    match = re.search("\<(?P<brackets>.*)\>",text)
    if match:
        print (match.group('brackets'))
    

    注意在正则表达式中将文本[^ 替换为.*),并在对re.search() 的调用中包含text 参数。

    (编辑)

    此答案解决了已在问题和其他答案中更正的问题。此处提议的对正则表达式的更改将捕获直到最后一个 &gt; 的所有文本,而在问题和另一个答案中更改的正则表达式将仅捕获直到它找到的第一个 &gt; 的文本。

    【讨论】:

    • 你说得对,我实际上把问题的格式搞砸了
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2019-09-14
    • 1970-01-01
    • 2020-01-29
    • 2011-11-15
    • 1970-01-01
    相关资源
    最近更新 更多