示例 1
import re
data = '[email protected] hd'
stufff = re.findall('@([0-9]*?)', data)
print(stufff)
它打印
['']
但是为什么但是@
符号后面有数字,我知道它遵循非贪婪
它应该打印['8']
但为什么不打印?我需要有人向我解释这段代码。
例子2
import re
data = '[email protected] hd'
stufff = re.findall('@([0-9]*)', data)
print(stufff)
我知道它是贪婪的所以它在
@
之后取数字并在看到i时停止,所以输出是['89']
。请解释一下example-1,谢谢!
对我来说,我将这些正则表达式符号用于以下目的:
?
零次或一次匹配前面的元素+
匹配前面的元素一次或多次*
匹配前面的元素零次或多次
所以在你的情况下,如果你只想获得'8',你应该单独使用
?
,而不是组合*?
。所以你的代码应该是:
import re
data = '[email protected] hd'
stufff = re.findall('@([0-9]?)', data)
print(stufff)
输出:
['8']