Regex 如果value有多个数据,如何使用Perl Regx解析[key=value]

Regex 如果value有多个数据,如何使用Perl Regx解析[key=value],regex,perl,Regex,Perl,我无法解决下面的问题,所以我使用Perl脚本来解析 没有正则表达式,但我相信有一个正则表达式 输入字符串(没有换行符): 预期产出: 我尝试了一些正则表达式来解析字符串,但解析失败 由于它有多个带有,分隔值的项目。 例如,NameService有两个值A,PTR 请帮助我构建正则表达式来解析上面的内容。 (.+?=.*?)不拾取多个值。您可以使用此正则表达式匹配 (?<=^|,)(?<key>.*?)=(?<value>.*?)(?=,|$) (?一般来说,您的格

我无法解决下面的问题,所以我使用Perl脚本来解析 没有正则表达式,但我相信有一个正则表达式

输入字符串(没有换行符):

预期产出:

我尝试了一些正则表达式来解析字符串,但解析失败 由于它有多个带有
分隔值的项目。 例如,NameService有两个值A,PTR

请帮助我构建正则表达式来解析上面的内容。
(.+?=.*?)
不拾取多个值。

您可以使用此正则表达式匹配

(?<=^|,)(?<key>.*?)=(?<value>.*?)(?=,|$)

(?一般来说,您的格式似乎并不明确-类似于
A=B,C=D
可能意味着
A
映射到
B
C
映射到
D
,或者
A
映射到
B,C=D
-但是为了更好的近似,您可以编写:

my @output = split /,(?=\w+=)/, $input;

这将在逗号(
)上拆分
$input
,并附加限制,即逗号后面必须有一个或多个“单词字符”(
\w
-字母、数字、下划线)加上等号。(这称为a)。

是“键”已修复?顺序是否已修复?您不能用一个示例来制定格式规范。如果关键字名称和顺序已修复,则很容易:(当您要编辑问题时,请单击“编辑”链接,而不是关闭问题并打开新问题。(优先级>10k的问题,请参阅)@鲁克:哦,你在那篇文章上写了什么吗?很抱歉……+1.我比我更喜欢这篇。:)我想得太多了,或者什么的;这比必须匹配整个模式要简单得多。
(?<=^|,)(?<key>.*?)=(?<value>.*?)(?=,|$)
my @output = split /,(?=\w+=)/, $input;