匹配所有标签的正则表达式模式

Regex pattern to match all tags

我正在尝试编写正则表达式模式来解析具有相似标签(3 个字符)的字符串,但这些标签已在字符串中退役

ABC=TEXT 1 - HERE.. DEF=/TEXT 2: TEXT .. ZYX=TEXT 3 TEXT

当我使用

#([A-Z]{3})=(.*)+#isU

我只得到标签 ABC、DEF、...但没有得到内容。我怎样才能同时获得两者?

我想得到标签和内容成对的结果

ABC
TEXT 1 - HERE.. 

DEF
/TEXT 2: TEXT .. 

ZYX
TEXT 3 TEXT

更新:在 https://regex101.com/r/uI0fW4/1

查看我的示例

您需要使用积极的先行断言。

([A-Z]{3})=(.*?)(?=[A-Z]{3}=|$)

DEMO

这个([A-Z]{3})=(.*)+正则表达式,特别是
这个子表达式

(.*)+   

告诉引擎尽可能多地覆盖捕获组 1。
在最后一次写入时,.* 什么都不匹配,因为它什么也不能匹配。

因此捕获组是空的。

您可以使用它来获取捕获组 2 中的数据。

 # (\b[A-Z]{3})=((?:(?!\b[A-Z]{3}=).)*)

 ( \b [A-Z]{3} )               # (1)
 =
 (                             # (2 start)
      (?:
           (?! \b [A-Z]{3} = )
           . 
      )*
 )                             # (2 end)