想要完成一个正则匹配,结果始终匹配不上,正则如下:
(:::(ONE)(::)([a-zA-Z]+)(::)(.+?):::)(:::(AND|OR|NOT)(::)([a-zA-Z]+)(::)(.+?):::)*
我想要的结果是以 :::ONE::title::标题:::
开头,后面是多个 :::AND::title::标题:::
(开头必须有 ONE
且只出现一次,后面的 AND
可以是 OR
或者 NOT
,其中 title
也可以 author
等,每一组都是 :::
开头和结尾)
下面是我测试使用的文本内容::::ONE::title::标题::::::AND::author::作者::::::OR::keyword::关键词::::::NOT::year::2017:::
我自己匹配结果,只匹配了第一组和最后一组,希望大牛们帮忙写一下或提供一下思路(项目中用,网上查了很久,没找到解决方案)
这是我测试正则使用的网站:https://regex101.com
感谢!
有可能是子表达式的匹配值被重复覆盖,导致最后的值是最后的匹配结果,可以用循环匹配获取到每个值,下面是用js写
的循环匹配