马赫标签或行开头的8个空格

时间:2015-05-28 20:24:33

标签: python regex python-2.7

我有一个带有混合标签和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

1 个答案:

答案 0 :(得分:2)

方括号是一组要匹配的字符,在您的案例选项卡中,|或空间。使用圆形的:

match = re.search(r'^(?:\t|        )line (?P<data>.*)', line)