0

假设我有一个字符串,其中包含一些由“|”分隔的数据字段,例如 |1|2|3|4|5|6|7|8|

我的目的是获得第 8 场。这就是我正在做的事情:

pattern = re.compile(r'^\s+(\|.*?\|){8}')
match = pattern.match(test_line)
if match:
   print:match.group(8)

但看起来无法匹配。我知道在这种情况下我需要使用 ? 对于非贪婪匹配,但为什么我无法获得第 8 场?

谢谢

4

1 回答 1

5

正则表达式可能会使这个问题复杂化而不是简化它。从 | 获取第八个项目的简单方法 分隔字符串正在使用 split()

a = '|here|is|some|data|separated|by|bars|hooray!|'

print a.split('|')[8]

回报

hooray!

使用 regex,获得它的一种方法是:

import re
a = '|here|is|some|data|separated|by|bars|hooray!|'

pattern = re.compile(r'([^\|]+)')
match = pattern.findall(a)
print match[7]

回报

hooray!
于 2013-06-20T23:06:16.953 回答