我正在尝试编写正则表达式模式来解析具有类似标签(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)