我使用以下正则表达式;
((?:_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']
答案 0 :(得分:0)
如下所示更改正则表达式,然后从组索引1和2中获取所需的字符串。
(?:_missing_:|_exists_:)([a-z1-9]+)|([a-z1-9]+)(?=:)
您不需要在捕获组中包含非捕获组(?:_missing_:|_exists_:)
。这是返回missing:title
而不是title
的原因。此外,[a-z1-9]+
的捕获组也足够了。