我正在使用以下正则表达式;
((?:_missing_:|_exists_:)[a-z0-9]+)|(([a-z0-9]+)(?=:))
匹配一个lucene查询字符串;
_missing_:title age:(>=10 AND < 20) AND age:123 AND _exists_:title123
不尊重第一个非捕获组并返回
_missing_:title
而不是 title
.使用积极的前瞻会使整个正则表达式无法匹配任何内容。它应该返回以下数组;
['title', 'age', 'age', 'title123']
最佳答案
如下更改您的正则表达式,然后从组索引 1 和 2 中获取您想要的字符串。
(?:_missing_:|_exists_:)([a-z1-9]+)|([a-z1-9]+)(?=:)
您不需要包含非捕获组
(?:_missing_:|_exists_:)
在捕获组内。这就是返回 missing:title
的原因而不是 title
.以及 [a-z1-9]+
的捕获组就足够了。DEMO
关于javascript - 为什么积极的前瞻性不能作为第一个捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27188999/