如何匹配固定时间的正则表达式模式组?

时间:2019-04-05 09:41:19

标签: regex

我写了一个与该组基本匹配的正则表达式,但是我想限制它的搜索,以便在找到n个组后才查找匹配项,直到结束并停止。

我的日志-

[Mon Feb 27 15:40:12.341031 2017] [auth_digest:notice] [pid 2420:tid 332] [AH01757: generating secret for digest authentication ...]

我的模式-

([^\[\]]+)

在pattersn之上可以匹配所有内容,但是我只想将前2个分组,即 [2017年2月27日星期一15:40:12.341031] [auth_digest:notice] >

一些类似的东西-

([^\[\]]+){2}

单个字符或单词可以使用例如(abc){2}来工作,但是分组呢? 有可能吗?

2 个答案:

答案 0 :(得分:0)

尝试这个。您只需要在末尾处理一个额外的空白。

const str = "[Mon Feb 27 15:40:12.341031 2017] [auth_digest:notice] [pid 2420:tid 332] [AH01757: generating secret for digest authentication ...]";


const regex = /(?:\[.+?\] ){2}/;
console.log(str.match(regex));

答案 1 :(得分:0)

您的模式([^\[\]]+)使用否定的字符类,该字符类与[]不匹配,并且不考虑左括号和右括号的结构。

{2}重复它会重复该组,并会导致一个匹配和一个捕获组,其中该组包含上次迭代的匹配。

如果您希望从字符串的开头开始进行2个匹配,则可以使用锚点^来声明字符串的开头,并使用2个捕获组,在匹配的(\[[^]]+\])之间留有空格,其中包括左方括号和右方括号。

^(\[[^]]+\]) (\[[^]]+\])

Regex demo