适用于动态匹配组对象的 Python 正则表达式

标签 python regex

我正在尝试使用 Python 中的正则表达式从输出中提取几个感兴趣的字段。

假设我的字符串为

Interface1 is down (Administratively down)

我写的正则表达式是:

pat = 'Interface(\d) is (\S)+ (.*)'

我能够获得所需的字段,但是当界面启动时,不会打印原因,我也想让正则表达式为这种情况工作..现在用我写的常规 exp,它似乎不起作用..有人可以帮忙..

当接口(interface)启动时,输出为

Interface1 is Up
m.group()

Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    m.group()
AttributeError: 'NoneType' object has no attribute 'group'

最佳答案

您需要删除第二个和最后一个捕获组之间的空格才能匹配两者。此外,组外的 + 运算符使其成为重复组;而是将它放在里面。

Interface(\d+) is (\S+)(.*)

Regex101

关于适用于动态匹配组对象的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28699219/

相关文章:

Python 测试我的数据是否服从对数正态分布

python - 解码 Scapy ASN1 编码的 SSL/TLS 证书字段

html - NSRegularExpression 检查 HTML 字符串的内容

python - Python 正则表达式匹配结果中缺少组

regex - 在 vim 中查找并替换整个单词

python - 正则表达式中的半空格

python - 更改数据框中行的数据类型

python - PyQT:如何打开新窗口

python - GAE 开发服务器导致 MySQL 连接错误 - 类似的连接代码在交互式 shell 中工作

使用 Notepad++ 查找双括号的正则表达式