我试图在正则表达式中获取一些匹配文本的结果,但它似乎不起作用。有谁知道可能出了什么问题?
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>[^\>]+)>", text)
if match:
print (match.group('brackets'))
这不打印任何内容,即未找到匹配项。
这实际上是一个非常常见的错误——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'
虽然@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()
(编辑)
此答案解决了已在问题和其他答案中更正的问题。此处提议的对正则表达式的更改将捕获所有文本,直到>
该行的最后一个,而在问题和另一个答案中更改的正则表达式将仅捕获直到>
它找到的第一个文本。