假设我有一个字符串,其中包含一些由“|”分隔的数据字段,如 | 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场?
由于
答案 0 :(得分:5)
正则表达式可能会使这个问题复杂化而不是简化它。从|获取第八项的简单方法分隔字符串使用split():
a = '|here|is|some|data|separated|by|bars|hooray!|'
print a.split('|')[8]
RETURNS
hooray!
使用正则表达式,获得它的一种方法是:
import re
a = '|here|is|some|data|separated|by|bars|hooray!|'
pattern = re.compile(r'([^\|]+)')
match = pattern.findall(a)
print match[7]
RETURNS
hooray!