首页 > 解决方案 > RegEx - 在 HTML-Anchor 元素中的组之间未捕获的任何内容

问题描述

因此,我正在尝试修改 RegEx 以捕获 HTML-Anchor 元素内的标签(我知道您不应该这样做,但这是必需的)。但是当我试图不匹配捕获组之间的任何内容时出现了一个问题,因为“任何内容”都是按字面意思表示的,因此元素内的标签不会被捕获。到目前为止,我已经尝试了一个非捕获组和一个否定集,但两者似乎都“吞噬”了我的组。

/<a[^>]*href=\"([^\"]+)\"(?:.*?)( data-survey=[\"\']({[^}]*})[\"\'])?( data-answer=[\"\']({[^}]*})[\"\'])?[^>]*\/?>/g

(?:.*?)似乎是这里的罪魁祸首。例如:<a href="#" foo data-survey="{...}">。只要 和 之间没有任何东西<adata...它似乎就可以工作。

标签: javaregex

解决方案


尝试替换有问题的:

(?:.*?)

和:

(?:(?! data-(?:survey=|answer=)).)*

这表示只要下一个字符不是' data-survey='or就继续匹配下一个字符' data-answer='

见正则表达式演示


推荐阅读