Ant*_*ong 0 python regex python-2.6
如果我这样做
import re
m = re.compile("[0-9]{1,}Y")
res = m.search("AUD3M25Y_EOD2")
if res:
return res.group(0)[:-1]
Run Code Online (Sandbox Code Playgroud)
我会得到25作为答案
但是,如果我这样做
import re
m = re.compile(".*([0-9]{1,})Y.*")
res = m.match("AUD3M25Y_EOD2")
if res:
return res.groups(0)
Run Code Online (Sandbox Code Playgroud)
我只会得到5.
为什么不同?
它与"全球"选项有什么关系吗?(很像s /// g in vi)
在你的比赛中,第一个.*是贪婪的,它尽可能匹配,包括数字.如果你不那么贪心,它会起作用:
.*?([0-9]{1,})Y.*
Run Code Online (Sandbox Code Playgroud)
(PS我认为这个贪婪的问题并没有使它成为re.search和re.match的公平比较)
| 归档时间: |
|
| 查看次数: |
3196 次 |
| 最近记录: |