[英]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.