匹配所有标签的正则表达式模式
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
查看我的示例
您需要使用积极的先行断言。
([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)
我正在尝试编写正则表达式模式来解析具有相似标签(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
查看我的示例
您需要使用积极的先行断言。
([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)