我试图在正则表达式中获取一些匹配文本的结果,但它似乎不起作用。有谁知道可能出了什么问题?
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'))
请注意正则表达式中的文本替换以及对[^的调用中包含的参数。.*)textre.search()
(编辑)
此答案解决了已在问题和其他答案中更正的问题。此处提议的对正则表达式的更改将捕获所有文本,直到>该行的最后一个,而在问题和另一个答案中更改的正则表达式将仅捕获直到>它找到的第一个文本。