簡體   English   中英

在 python 中搜索特定文本

[英]Searching for specific text in python

希望這是一個簡單的過程。 我正在嘗試在設備上搜索主機名,然后使用該主機名來指示通過 netmiko 發送給它的配置。 我認為我失敗了,因為 output 不在一條線上:作為目前的測試,我只是想按如下方式打印 output:

device_name = net_connect.send_command('show running-config sys global-settings hostname')
hostname = re.search('^hostname', device_name, re.M)
print(hostname)

當我在設備上手動運行上述命令時,output 是這樣的:

sys global-settings {

    hostname triton.lakes.travp.net

}

那么我是否需要調整 re.search 以考慮單獨的行以僅捕獲“主機名 triton.lakes.travp.net”行?

非常感謝

回覆

(?=...)

匹配 if... 匹配下一個,但不使用任何字符串。 這稱為前瞻斷言。 例如,Isaac (?=Asimov) 僅在其后跟 'Asimov' 時才會匹配 'Isaac'。

(?<=...)

如果字符串中的當前 position 前面有一個以當前 position 結尾的匹配項,則匹配。 這稱為肯定的后向斷言。 (?<=abc)def 將在 'abcdef' 中找到匹配項,因為后向查找將備份 3 個字符並檢查包含的模式是否匹配。

演示: (?<={).*(?=})

這意味着匹配以{開頭並以}結尾的字符串

import re

s = """
sys global-settings {

    hostname triton.lakes.travp.net

}
"""

print(re.search(r"(?<={)\s+(hostname .+?)\s+(?=})", s).group(1))

# hostname triton.lakes.travp.net

暫無
暫無

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

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