正则表达式:can"。*"匹配与"。*?"相同的字符串;做?

时间:2015-08-08 15:27:45

标签: regex python-3.x

来自Dive into Python3

this.myButton....

它解释说:

  

正则表达式查找空格,s,然后查找任意字符(。*?)的最短可能系列,然后是空格,然后是另一个s。

我的问题是:re.findall(' s.*? s', "The sixth sick sheikh's sixth sheep's sick.") 可以与.*匹配相同的字符串吗?

3 个答案:

答案 0 :(得分:3)

是。如果贪婪的匹配与懒惰的匹配相同。

>>> re.findall(' s.*? s', "The sixth sheik") == re.findall(' s.* s', "The sixth sheik")                                                                                                                                     
True

但如果贪婪的比赛更长,你会得到不同的结果。

>>> re.findall(' s.*? s', "The sixth sick sheik") == re.findall(' s.* s', "The sixth sick sheik")                                                                                                                           
False

答案 1 :(得分:1)

  

我的问题是:可以。*匹配相同的字符串。*?办?

是的,如果只有' sany s'这样的模式存在。也就是说,找到了一个匹配。

示例:

>>> import re
>>> s = 'foo sgh s'
>>> re.findall(r' s.*? s', s)
[' sgh s']
>>> re.findall(r' s.* s', s)
[' sgh s']

答案 2 :(得分:1)

通过here

检查

Results with Question mark

删除问号时: After question mark removed