需要帮助才能在具有多个匹配项的正则表达式中仅获得第一个匹配项

Need help to get only first match in regex with multiple matches

我的文本输出类似于:

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

我想匹配一个正则表达式与匹配的 mac 域的原则核心。我尝试了各种正则表达式但都失败了。我的正则表达式总是捕获第二个 mac 域,即 N/A。有什么办法可以得到 Mac 域的正则表达式:其次是 Principle Core.

更新:

约束:- 只有 gm 可以用作正则表达式中的标志。 语言:javascript

我猜你这里只是有一个贪心点与惰性点的问题。以下正则表达式模式,启用全点模式,正在运行:

Principal Core.*?\bMac Domain: (\S+)

Demo

Mac 域将在第一个捕获组中可用。您将使用的确切代码取决于您使用的 language/tool,但上述一般模式至少是一个好的开始。

编辑:

如果您的正则表达式引擎没有全点模式,我们可以通过匹配 [\s\S]* 而不是 .*:

来模拟
Principal Core[\s\S]*?\bMac Domain: (\S+)