我正在尝试在正则表达式中获取某些匹配文本的结果,但它似乎不起作用。任何人都知道可能出现的问题?
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>[^\>]+)>", text)
if match:
print (match.group('brackets'))
这没有打印,即找不到匹配。
答案 0 :(得分:6)
这实际上是一个非常常见的错误 - 当您想使用re.match
时,看起来您正在使用re.search
。 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'
答案 1 :(得分: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'))
请注意在正则表达式中将[^
替换为.*)
,并在text
的调用中包含re.search()
参数。
(编辑)
这个答案解决了一个问题,该问题已在问题和其他答案中得到纠正。对此处提出的正则表达式的更改将捕获到该行的最后>
的所有文本,而问题和其他答案中更改的正则表达式将仅捕获文本,直到第一个>
它找到了。