我有两个经过测试和工作的正则表达式值:
(?<=\bpolicy-map\s)(\w+)
和
(?<=\binput\s)(\w+)
我现在需要比较匹配的两个正则表达式值。
(?&lt; = \ binput \ s)(\ w +)获得&#34; service-policy input&#34;之后的单词。 while(?&lt; = \ bpolicy-map \ s)(\ w +)获得&#34; policy-map&#34;之后的单词。
背景故事是我有一个路由器配置文件,我看到&#34;策略映射&#34;值匹配&#34;服务政策输入&#34;值。以下是我正在测试的路由器配置文件中的值。请注意,这些值不会是连续的,因为&#34;控制平面&#34;坐在他们之间,所以可能要做(?s)或其他事情:
------------rtr config----------------- policy-map RTR_CoPP control-plane service-policy input RTR_CoPP ------------rtr config-----------------
答案 0 :(得分:0)
假设你正在做的是解析你的配置,它将文本作为字符串读取,
我会简化您的正则表达式以匹配第一项:/^.*policy-map\s(\w+)
和第二项:/\binput\s(\w+)$/
这应该从头开始解析第一个正则表达式,从结尾解析第二个部分。如果你比较来自两个不同正则表达式的匹配,你不需要?=
,如果你输入一个正则表达式,它会重置指针。