簡體   English   中英

Python正則表達式在文件行的開頭搜索字符串

[英]Python regex search for string at beginning of line in file

這是我的代碼:

#!/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中使用真正的正則表達式

您可以使用多線模式,然后^匹配一行的開頭:

#!/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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM