-2

我无法解决以下问题,所以我使用 Perl 脚本在没有正则表达式的情况下进行解析,但我相信它有一个正则表达式。

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

ObjectAddress=120.146.128.250,ObjectName=psyseds-tt1y,ObjectClass=SCM F5,ObjectDescription=,Aliases=psyseds-tt1y.site.com.,NameService=A,PTR,DynamicDNSUpdate=A,PTR,CNAME

预期输出

ObjectAddress=120.146.128.250
ObjectName=psyseds-tt1y
ObjectClass=SCM F5
ObjectDescription=
Aliases=psyseds-tt1y.site.com.
NameService=A,PTR
DynamicDNSUpdate=A,PTR,CNAME

我尝试了一些正则表达式来解析字符串,但我无法解析,因为它有多个具有,分隔值的项目。例如,NameService 有两个值 A,PTR。

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

4

2 回答 2

3

一般来说,您的格式似乎不是明确的——比如A=B,C=D可能意味着A映射到BC映射到D,或者A映射到B,C=D——但是为了一个好的近似值,你可以写:

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

这将$input在逗号 ( ,) 上拆分,附加限制是逗号必须后跟一个或多个“单词字符”(\w- 字母、数字、下划线)加等号。(这称为前瞻断言。)

于 2013-02-06T16:52:54.363 回答
0

你可以匹配这个正则表达式

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

您现在可以通过组名访问值

于 2013-02-06T16:51:24.383 回答