我正在寻找一个通用的正则表达式,可以匹配任何这些启用提示,
RP/0/RP0/CPU0:ios#
RP/0/RP0/CPU0:R1#
RP/0/RP0/CPU0:CX1-SF#
RP/0/RP0/CPU0:~#
RP/0/RP0/CPU0:cisco#
和不应该匹配这样的配置提示,
RP/0/RP0/CPU0:ios(config)#
RP/0/RP0/CPU0:R1(config)#
RP/0/RP0/CPU0:R1(config-if)#
我是这样开始的
(.*?)RP/d+/RP[01]/CPUd+:.+#s*?
但是它也匹配配置提示,
https://regexr.com/6km9a
在禁止)
的#
前使用负向后视
(.*?)RP/d+/RP[01]/CPUd+:.+(?<!))#s*?
您可以使用[^()n]*
省略冒号后面的匹配括号或换行符,然后匹配直到#
请注意,您可以省略s*?
,因为它是模式的最后一部分并且不贪婪,因此它将不匹配任何字符。
(.*?)bRP/d+/RP[01]/CPUd+:[^()n]*#
(.*?)
捕获组1,匹配尽可能少的字符bRP
匹配以字边界开头的RP/d+/RP[01]/CPUd+:
具体模式直到:
[^()n]*
可选地匹配除使用反字符类 列出的任何字符#
Match字面意思
查看regex101演示。
或者可以排除匹配的"config"括号之间:
(.*?)bRP/d+/RP[01]/CPUd+:(?!w+(configb[^()n]*)).+#
查看另一个regex101演示。