我写了一个与该组基本匹配的正则表达式,但是我想限制它的搜索,以便在找到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}来工作,但是分组呢? 有可能吗?
答案 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个捕获组,在匹配的(\[[^]]+\])
之间留有空格,其中包括左方括号和右方括号。
^(\[[^]]+\]) (\[[^]]+\])