Regex 单词的否定前瞻

Regex 单词的否定前瞻,regex,Regex,在这一次我的头撞到了墙上,我对regex相当陌生,有点不懂。我正在使用这个网络合规性软件,它不允许在一个字段中匹配多个条件,但接受正则表达式 !(?!.*FastEthernet[0-24].[0-24]\.[0-250]) 软件将解析所有信息,直到它符合所表达的条件。所以在我的例子中,我希望它匹配除非后面跟一个子接口快速以太网#/#。#其中#是任意数字 这是我的数据 interface FastEthernet0/0 shutdown ! interface FastEthernet0/0.

在这一次我的头撞到了墙上,我对regex相当陌生,有点不懂。我正在使用这个网络合规性软件,它不允许在一个字段中匹配多个条件,但接受正则表达式

!(?!.*FastEthernet[0-24].[0-24]\.[0-250])
软件将解析所有信息,直到它符合所表达的条件。所以在我的例子中,我希望它匹配
除非后面跟一个子接口
快速以太网#/#。#
其中#是任意数字

这是我的数据

interface FastEthernet0/0
shutdown
!
interface FastEthernet0/0.100
ip address 192.168.1.100
!
interface FastEthernet0/1
shutdown
!
这应该做到:

!(?!\s*interface FastEthernet\d/\d\.\d)
看到这个运行在

上,我会使用这个:

!(?!(.|\n|\r)*FastEthernet\d\d?\/\d\d?\.\d{1,3})

似乎是这样。

在正则表达式中使用
*
时要非常非常小心<代码>*
匹配所有内容<代码>*?更安全,但即使这样也相当危险。如果可以,请始终尝试生成不包含
*
的正则表达式。是否只匹配最后一个
在你的例子中?我的目标是匹配第二个@mart1n它允许
匹配换行符(通常不允许),但在这种特殊情况下不需要。在这种情况下,表达式不应该匹配
后面的(可选)新行吗?此外,您可能应该在转义点上转义
@mart1n良好调用(已修复),但我认为可选换行符已包含在内,因为
\s
包含换行符。我测试了这一点,但它似乎不起作用,不确定是软件还是您的表达式。你的表情和三个都很相配lines@anubhava好啊因为我选择不使用点,所以删除了。@Luky我删除了
(?s)
。你能试试这个吗?谢谢你的帮助,但是这个软件似乎有问题,所以我无法确定它是否有效。@Luky听起来像是个糟糕的问题:(我希望你能尽快解决它!是的,幸运的是开发人员能很快回复。)