我只想获取“66664324”,“)”和“-”之间的内容。为什么该search方法本身会得到“)”和“-”。
a="(021)66664324-01"
b1=re.findall('\)(.*)-',a)
>['66664324']
b2=re.search('\)(.*)-',a).group()
>')66664324-'
Run Code Online (Sandbox Code Playgroud)
两个代码片段之间有什么区别。
尝试打印 group(1) 而re.search不是 group()。其中group()打印整个匹配项,但 group(1) 仅打印捕获的组 1(组索引 1 中存在的 printig chars)。
>>> a="(021)66664324-01"
>>> import re
>>> b2=re.search('\)(.*)-',a).group(1)
>>> b2
'66664324'
>>> b2=re.search('\)(.*)-',a).group()
>>> b2
')66664324-'
Run Code Online (Sandbox Code Playgroud)
但re.findall优先考虑组而不是匹配,并且它返回列表中的结果但search没有。这样就b1=re.findall('\)(.*)-',a)可以得到所需的输出。如果存在组,则re.findall方法将仅打印组而不是匹配项。如果不存在任何组,则仅打印匹配项。
>>> b1=re.findall('\)(.*)-',a)
>>> b1
['66664324']
>>> b1=re.findall('\).*-',a)
>>> b1
[')66664324-']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14348 次 |
| 最近记录: |