Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从正则表达式中提取文本?_Python_Regex - Fatal编程技术网

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

Python 从正则表达式中提取文本?,python,regex,Python,Regex,我试图在正则表达式中得到一些匹配文本的结果,但它似乎不起作用。有人知道会出什么问题吗 import re text = "I want to match anything in <angle brackets>" match = re.search("\<(?P<brackets>[^\>]+)>", text) if match: print (match.group('brackets')) 重新导入 text=“我想匹配中的任何内容” 匹

我试图在正则表达式中得到一些匹配文本的结果,但它似乎不起作用。有人知道会出什么问题吗

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
时,您似乎正在使用
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'))

虽然@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()
时包含
text
参数

(编辑)


此答案解决了一个问题,该问题和另一个答案都已更正。此处建议的对正则表达式的更改将捕获到行中最后一个
之前的所有文本,而问题和另一个答案中更改的正则表达式将仅捕获到第一个
>之前的文本它找到的。

啊,这就是诀窍,我应该仔细读一读,谢谢!你说得对,我实际上把问题的格式弄错了
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>.*)\>",text)
if match:
    print (match.group('brackets'))