Regex 需要帮助才能在正则表达式中获得具有多个匹配项的第一个匹配项吗
我有一个文本输出,类似于:Regex 需要帮助才能在正则表达式中获得具有多个匹配项的第一个匹配项吗,regex,regex-lookarounds,regex-negation,regex-greedy,Regex,Regex Lookarounds,Regex Negation,Regex Greedy,我有一个文本输出,类似于: Principal Core Te1/1/0: DS 0 controller: 1/0/2 (profile 200, DOCSIS) DS 1 controller: NA US 0 controller: 1/0/0 (profile 0, DOCSIS) US 1 controller: NA Mac Domain: Ca1/0/0 Auxiliary Core Te1/1/6: DS 0 controller: NA DS
Principal Core Te1/1/0:
DS 0 controller: 1/0/2 (profile 200, DOCSIS)
DS 1 controller: NA
US 0 controller: 1/0/0 (profile 0, DOCSIS)
US 1 controller: NA
Mac Domain: Ca1/0/0
Auxiliary Core Te1/1/6:
DS 0 controller: NA
DS 1 controller: NA
US 0 controller: NA
US 1 controller: NA
Mac Domain: NA
我想匹配一个正则表达式和principle核心的mac域。我尝试了各种正则表达式,但都失败了。我的正则表达式总是捕获第二个mac域,即N/A。是否有任何方法可以获取mac域的正则表达式:后跟Principle Core
更新:
限制:-只有gm可以用作正则表达式中的标志。
语言:javascript我猜这里有贪心点和懒惰点的问题。启用了点全部模式的以下正则表达式模式正在工作:
Principal Core.*?\bMac Domain: (\S+)
然后,Mac域将在第一个捕获组中可用。您将使用的确切代码取决于您正在使用的语言/工具,但上述通用模式至少是一个良好的开端
编辑:
如果您的正则表达式引擎没有点所有模式,我们可以通过在[\s\s]*
而不是*
上进行匹配来模拟:
Principal Core[\s\S]*?\bMac Domain: (\S+)
感谢您的回复。我错过了限制,这是我的错。唯一可以用来匹配的修改器是全局和多行。即gm@Nutan如果您的正则表达式引擎不支持任何点所有模式,请使用
[\s\s]*
跨行匹配。非常感谢:)