我无法解决下面的问题所以我使用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。
请帮我构建正则表达式以解析上面的内容。
(.+?=.*?)
不会获取多个值。
答案 0 :(得分:3)
一般情况下,您的格式似乎并不明确 - 类似A=B,C=D
的内容可能意味着A
映射到B
而C
映射到{{ 1}},或D
映射到A
- 但是为了得到很好的近似,你可以写:
B,C=D
这将在逗号(my @output = split /,(?=\w+=)/, $input;
)上拆分$input
,并添加限制,逗号必须后跟一个或多个“字符”(,
- 字母,数字,下划线)加上一个等号。 (这称为lookahead assertion。)
答案 1 :(得分:0)
您可以匹配与此正则表达式
(?<=^|,)(?<key>.*?)=(?<value>.*?)(?=,|$)
您现在可以按组名称访问值