【发布时间】:2019-07-17 21:21:42
【问题描述】:
re.search 查找某事物的第一个实例。在下面的代码中,“\t”出现了两次。有没有办法让它跳到第二个实例?
code = ['69.22\t82.62\t134.549\n']
list = []
text = code
m = re.search('\t(.+?)\n', text)
if m:
found = m.group(1)
list.append(found)
结果:
list = ['82.62\t134.549']
预期:
list = ['134.549']
【问题讨论】:
-
如果有 4 个选项卡,需要哪个匹配项?
-
或者将模式放入两次,其中一组不包括模式(
[^\t]+);或者在两者之间使用非贪婪匹配,就像您现在所做的那样。 -
@00 非贪婪无济于事。这会缩短右侧的匹配,而不是左侧的匹配。
-
对于大于“第二”选项卡只有一种解决方案。那是
^(?:[^\t]*\t){2}(.*?)\n -
@sln 将其作为答案发布