我有以下字符串匹配:
Attribute1= ,Attribute2=opengdfd: ERROR: (fgdke.c, 84,
Init state check failed! (INVALID_SESSION, 3424))
,Attribute3=34624 ,Attribute4=iluvregex
我想要的是将Attribute1 / 2/3分成不同的值。
如果没有后跟空格,则值的结尾必须是逗号
消除匹配结尾空格,可以通过两个空格的组匹配空格。
谢谢!
答案 0 :(得分:1)
也许这可以让你开始用你正在写的任何语言。这是perl代码(不确定Java版本是什么)。这一部分:,正则表达式中的(?!\ s)是negative lookahead,确保逗号后面没有空格。 (。+?)部分是捕获组,其中是属性的值:
say for $data =~ /Attribute\d+=(.+?),(?!\s)/gs;
答案 1 :(得分:0)
您可以在,(?=\s*Attribute\d+=)
上拆分,以获得不同属性的数组。
答案 2 :(得分:0)
String input = "Attribute1= ,Attribute2=opengdfd: ERROR: (fgdke.c, 84,"+
"Init state check failed! (INVALID_SESSION, 3424)) "+
",Attribute3=34624 , Attribute4=iluvregex";
Matcher m = Pattern.compile("Attribute\\d+\\=(.*?)((?=,(\\s*)Attribute\\d+\\=)|$)", Pattern.DOTALL).matcher(input);
while(m.find())
System.out.println(">"+m.group(1).trim()+"<");
打印:
><
>opengdfd: ERROR: (fgdke.c, 84,Init state check failed! (INVALID_SESSION, 3424))<
>34624<
>iluvregex<
如果您只想修改结果,请将trim()
替换为.replaceAll("\\s*$","")
;