模式匹配从Python 3中的shell命令中提取的IP地址

时间:2018-03-26 07:19:59

标签: python regex pattern-matching

我已经广泛搜索了我的困境的答案,所以我希望有人能够提供帮助。 我正在尝试从基于Linux的系统中检索IP地址,然后使用Python在屏幕上显示IP地址 - 这是我到目前为止所拥有的:

import tkinter
import subprocess
import os
import re
pattern = re.compile("^([A-Z][0-9]+)+$")
test = "10.11.10.1"
cmd = subprocess.check_output("ifconfig eno1", shell=True)
cmd = cmd.decode()
cmd = cmd.splitlines()
ip = re.match('[0-9]+', cmd[1])
if ip:
    print(ip.group(0))

如果我在解码打印ifconfig命令的几行输出后打印(cmd),则第二行包含我之后的IP地址,因此如果我print(cmd[1])显示此信息。 如果我将test替换为cmd [1],则脚本会按预期打印“10” 如果我将模式匹配行更改为

ip = pattern.match(cmd[1])

我得到相同的结果,但如果我将其更改为

ip = re.match(".*", cmd[1])

它打印出与print(cmd[1])相同的东西,所以它为什么匹配。*但是字符或数字都没有?原始数据是否可能采用其他格式而不是ascii ??

0 个答案:

没有答案