re.search查找某物的第一个实例。在下面的代码中,"\t"出现了两次。有没有办法让它跳到第二个实例?
code = ['69.22t82.62t134.549n']
list = []
text = code
m = re.search('t(.+?)n', text)
if m:
found = m.group(1)
list.append(found)
结果:
list = ['82.62t134.549']
预期:
list = ['134.549']
表达式的此修改版本确实返回所需的输出:
import re
code = '69.22t82.62t134.549n'
print(re.findall(r'.*t(.+?)n', code))
输出
['134.549']
我猜也许你想设计一个表达式,有点类似于:
(?<=[t])(.+?)(?=[n])
演示
大于"第二个"选项卡只有一个解决方案。
你可以这样做:
^(?:[^t]*t){2}(.*?)n
解释
^ # BOS
(?: # Cluster
[^t]* # Many not tab characters
t # A tab
){2} # End cluster, do 2 times
( .*? ) # (1), anything up to
n # first newline
蟒蛇代码
>>> import re
>>> text = '69.22t82.62t134.549n'
>>> m = re.search('^(?:[^t]*t){2}(.*?)n', text)
>>> if m:
>>> print( m.group(1) )
...
134.549
>>>