Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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,有一个问题长期困扰着我 在Python中,正则表达式总是匹配内容中最长的字符串 例如,内容如下: <test> A <br> B <br> AB 如果我使用regexre.compile('/(\w\s)+/'),python将匹配最长的字符串,这意味着AB 如何匹配最短的字符串,即A 感谢您的阅读和回复。re.compile('/(\w\s)+?/) re.compile('/<test/>(\w\s)+?/<br/>') 注

有一个问题长期困扰着我

在Python中,正则表达式总是匹配内容中最长的字符串

例如,内容如下:

<test> A <br> B <br>
A
B
如果我使用regex
re.compile('/(\w\s)+/
')
,python将匹配最长的字符串,这意味着
A
B

如何匹配最短的字符串,即
A

感谢您的阅读和回复。

re.compile('/(\w\s)+?/
re.compile('/<test/>(\w\s)+?/<br/>')
注意
(\w\s)+

有关详细信息,请参见重新编译('/(\w\s)+?/
) 注意
(\w\s)+


有关详细信息,请参见您的正则表达式看起来非常奇怪。我想你的意思是:

re.compile('/<test>[\w\s]+<br>/')
re.compile('/[\w\s]+
/)
在这种情况下,您可以使用问号将其设置为“非贪婪”:

re.compile('/<test>[\w\s]+?<br>/')
重新编译('/[\w\s]+?
/'))
您的正则表达式看起来非常奇怪。我想你的意思是:

re.compile('/<test>[\w\s]+<br>/')
re.compile('/[\w\s]+
/)
在这种情况下,您可以使用问号将其设置为“非贪婪”:

re.compile('/<test>[\w\s]+?<br>/')
重新编译('/[\w\s]+?
/'))
您需要使用非贪婪匹配,可以在手册中找到(只需搜索非贪婪):


在您的情况下,我相信正确的正则表达式应该是:
re.compile('/(\w\s)+?/

您需要使用非贪婪匹配,可以在手册中找到(只需搜索非贪婪):

在您的情况下,我相信正确的正则表达式应该是:
re.compile('/(\w\s)+?/
')
来自:

*?
+?

“*”
“+”
“?”
限定符都是贪婪的;它们匹配尽可能多的文本。有时这种行为是不可取的;如果RE
'title'
匹配,它将匹配整个字符串,而不仅仅是
'
。在限定符之后添加
“?”
,使其以非贪婪或最小方式执行匹配;将匹配尽可能少的字符。在前面的表达式中使用
*?
将只匹配
'

但是您不应该对XML使用正则表达式。

来自:

*?
+?

“*”
“+”
“?”
限定符都是贪婪的;它们匹配尽可能多的文本。有时这种行为是不可取的;如果RE
'title'
匹配,它将匹配整个字符串,而不仅仅是
'
。在限定符之后添加
“?”
,使其以非贪婪或最小方式执行匹配;将匹配尽可能少的字符。在前面的表达式中使用
*?
将只匹配
'



但是您不应该对XML使用正则表达式。

+
中添加一个
,使其不贪婪(它并不总是匹配内容中最长的字符串)嗨,我认为添加?不是解决这个问题的好办法。因为表示0或1次,它将匹配此简单原因和其他更复杂原因中的最长字符串。谢谢你的回复。@Jimmy the
在正则表达式中有不止一个含义,如果你把它放在一个量词后面,那么它的意思就是“使这个量词不贪婪”。哦,我知道你的意思,我稍后再试。我误解了你的意思。很抱歉。生活中一个普遍有用的原则是,在遇到奇怪的基本问题之前,研究文档是非常有用的。关于SO的第二个有用的原则是,搜索通常非常有用,特别是对于被问了一百万次的问题。将
添加到
+
以使其不贪婪(它并不总是匹配内容中最长的字符串)嗨,我认为添加?不是解决这个问题的好办法。因为表示0或1次,它将匹配此简单原因和其他更复杂原因中的最长字符串。谢谢你的回复。@Jimmy the
在正则表达式中有不止一个含义,如果你把它放在一个量词后面,那么它的意思就是“使这个量词不贪婪”。哦,我知道你的意思,我稍后再试。我误解了你的意思。很抱歉。生活中一个普遍有用的原则是,在遇到奇怪的基本问题之前,研究文档是非常有用的。关于SO的第二个有用原则是,搜索通常非常有用,特别是对于被问了一百万次的问题。我没有投反对票,但我假设因为您在OP中采用了错误的正则表达式,
(\w\s)+?
是错误的,应该是
[\w\s]+?
当然不是。详细说明意味着他们的论点可能会被拆散,让他们看起来像个傻瓜。打了就跑更容易。@IgnacioVazquez Abrams,对不起,每个人都可以投他想要的每一票,因为他喜欢的每一个原因,我不能解释每一票,相信我,有很多票我不明白。好吧,让我们停止讨论,我只是好奇原因是什么@也许是这样,我没有把重点放在正则表达式本身,而是放在贪婪/非贪婪部分。当然,你是对的,我没有投反对票,但我认为,因为你在OP中采用了错误的正则表达式,
(\w\s)+?
是错误的,应该是
[\w\s]+?
当然不是。详细说明意味着他们的论点可能会被拆散,让他们看起来像个傻瓜。打了就跑更容易。@IgnacioVazquez Abrams,对不起,每个人都可以投他想要的每一票,因为他喜欢的每一个原因,我不能解释每一票,相信我,有很多票我不明白。好吧,让我们停止讨论,我只是好奇原因是什么@也许是这样,我没有把重点放在正则表达式本身上,更多的是放在贪婪上