提问者:小点点

匹配跟踪路由输出的正则表达式失败[重复]


我正在尝试编写一个正则表达式,它匹配以下任何一行

localhost本地域(127.0.0.1)0.025 ms 0.007 ms 0.006 ms

127.0.0.1(127.0.0.1)0.025毫秒0.007毫秒0.006毫秒

我试过下面的regexp

[127.0.0.1 | localhost.localdomain](127.0.0.1)[\d.]ms[\d.]ms[\d.]ms

但这不起作用。它只匹配

n(127.0.0.1)0.025 ms 0.007 ms 0.006 ms

我能在这方面得到一些帮助吗。

谢谢~S


共1个答案

匿名用户

在字符类中,没有匹配字符串的概念。对于regex[cat],它并不意味着它应该从字面上匹配单词cat。这意味着它应该匹配c或a或t。

同样的案子在这里。您正试图使用字符类匹配起始字符串

[127.0.0.1|localhost.localdomain]

应该用组来代替它

(?:127.0.0.1|localhost.localdomain)

您还希望从字面上匹配括号(),但是括号在正则表达式中具有特殊含义。他们是群体。要逐字匹配括号,应该使用\转义。

所以最终的正则表达式是

(?:127.0.0.1|localhost.localdomain) \(127.0.0.1\) [\d.]+ ms [\d.]+ ms [\d.]+ ms

(?:)是非捕获组。它不会将结果存储在内存中。

Regex Demo