不使用'\K'重写正则表达式

3

我有一个 正则表达式,可以接收没有标签名称的html标签:

<(\s)*\w* \K.*>

但是Java不支持在正则表达式中使用\K

我正在尝试重写没有使用\K,但对我来说似乎不可能

2个回答

3
标签名称长度未知,因此无法使用向后查找。因此,您必须使用匹配组来分析输入内容。 以下正则表达式将匹配两个组:
(?:<\s*\w+\s+)(.+)(?=>)

第0组将在开头包含<,而第1组仅包含预期结果。


2
一个简单的解决方法是将\K后面的所有内容都用一个组包起来。这样,当你获取第1个组时,就好像使用原始正则表达式的\K之前获取第0个组一样。请注意保留HTML标签。
<(\s)*\w* (.*>)

Demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接