这是我的代码:
#!/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
中使用真正的正则表达式答案 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()
。