Python正则表达式在文件行的开头搜索字符串

时间:2013-05-31 16:49:38

标签: python regex file-io

这是我的代码:

#!/usr/bin/python
import io
import re
f = open('/etc/ssh/sshd_config','r')
strings = re.search(r'.*IgnoreR.*', f.read())
print(strings)

返回数据,但我需要特定的正则表达式匹配:例如:

^\s*[^#]*IgnoreRhosts\s+yes

如果我将代码更改为:

strings = re.search(r'^IgnoreR.*', f.read())

甚至

strings = re.search(r'^.*IgnoreR.*', f.read())

我什么都没收到。我需要能够在perl

中使用真正的正则表达式

1 个答案:

答案 0 :(得分:17)

您可以使用多线模式,然后^匹配一行的开头:

#!/usr/bin/python
import io
import re
f = open('/etc/ssh/sshd_config','r')

strings = re.search(r"^\s*[^#]*IgnoreRhosts\s+yes", f.read(), flags=re.MULTILINE)
print(strings.group(0))

请注意,如果没有此模式,您始终可以^

替换\n

另请注意,此文件已校准为番茄:

^IgnoreRhosts\s+yes

足以检查参数


编辑:更好的方式

with open('/etc/ssh/sshd_config') as f:
    for line in f:
        if line.startswith('IgnoreRhosts yes'):
            print(line)

再一次,没有理由拥有领先的空间。但是,如果您想确保始终可以使用lstrip()