繁体   English   中英

从正则表达式中提取文本?

[英]Extract text from Regular Expression?

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

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时,看起来你正在使用re.match re.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'

虽然@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'))

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

(编辑)

这个答案解决了一个问题,该问题已在问题和其他答案中得到纠正。 对此处提出的正则表达式的更改将捕获到行中最后一个>所有文本,而问题和另一个答案中更改的正则表达式将捕获文本,直到它找到的第一个>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM