我有一个带有开放标签和闭合标签的模式
例如:/*tag1_START*/ some content /*tag1_END*/ other text /*tag2_START*/ some content /*tag2_END*/
我使用正则表达式\/\*([a-zA-Z0-9]+)_START\*\/(.*?)\/\*\1_END\*
可以在regex101中查看
但是,当标签交叉(错误)时,情况变得复杂:
例如:/*tag3_START*/ some /*tag4_START*/ content /*tag3_END*/ other /*tag4_END*/ content
我可以轻松检查匹配中的重叠部分,但是 REGEX 不会返回两个标签,因为它从上次匹配的最后一个字符继续匹配...
我能否使用正则表达式找到重叠的匹配,还是需要编写自己的代码?
\/\*([a-zA-Z0-9]+)_START\*\/(?=(.*?)\/\*\1_END\*)
。 - revo