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


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}=|$)

演示

([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)