python regex与dig输出不匹配

桃木

我正在尝试解析一些dig输出(是的,我知道dnspython,但它不满足我的要求),并且在为我的用例找到匹配的正则表达式时遇到了问题。我试图从dig输出中找到所有包含IN和NS的行,示例输出如下所示:

stackexchange.com.  300 IN  NS  ns1.serverfault.com.
stackexchange.com.  300 IN  NS  ns2.serverfault.com.

我试过了:

if 'NS' in line:

我找到了一些相关的行,可悲的是,我对NSEC DNS条目有误报,例如:

CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q5NFFJS5FUB0F2DNA098SBN0O663V NS SOA RRSIG DNSKEY NSEC3PARAM

也显示在我的输出中。我知道\s转义符应该匹配任何类型的空格和制表符,但是我的正则表达式却失败了。我目前有

for line in output:
    regex = re.compile(r'IN\sNS\s')
    if regex.match(line):
        print(line)

但这不起作用。您能帮我提出一个不会产生误报的正则表达式吗?任何帮助都将不胜感激。提前致谢

斯蒂芬·西玛耶(Stefan Seemayer)

你想要的search,不是match

匹配命令只从字符串开始处匹配

此外,如果IN之间的空格数量NS比较灵活,您可以使用来量化一个或多个匹配项+

如果将正则表达式的编译移出循环而仅编译一次,则代码将更快。

regex = re.compile(r'IN\s+NS\s')
for line in output:
    if regex.search(line):
        print(line)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章