我有一个带有混合标签和8个空格缩进的数据文件。我只想匹配第一个缩进的行。因此,如果我有以下数据文件,我只想匹配第1行和第1行。 2。
line 1 - 8 spaces
line 2 - tab
line 3 - 2 tabs
line 4 - 16 spaces
以下返回所有行,因为我没有在正则表达式中指定行的开头。
for line in fileinput.input():
match = re.search(r'[\t| ]line (?P<data>.*)', line)
if match:
print match.group('data')
输出:
1 - 8 spaces
2 - tab
3 - 2 tabs
4 - 16 spaces
当我将^添加到正则表达式以匹配行的开头时,只有第2行匹配。我假设^以某种方式与交替进行交互,但不知道如何。
for line in fileinput.input():
match = re.search(r'^[\t| ]line (?P<data>.*)', line)
if match:
print match.group('data')
输出:
2 - tab
答案 0 :(得分:2)
方括号是一组要匹配的字符,在您的案例选项卡中,|或空间。使用圆形的:
match = re.search(r'^(?:\t| )line (?P<data>.*)', line)