我有一个字符串,它可以是格式为
的字符串name=tony, age=49, address=france, plan=complete
或
name=tony, age=49, address="france", plan="complete"
或
name='tony', age=49, address='france', plan='complete'
或
name:"tony", age:49, "address":"france", "plan":"complete"
或
name:"tony", age:49, "address": "france", "plan":"complete"
我试图匹配地址=法国的各种排列。在地址之前我不需要引用或双引号。
在Java中,我这样做:
address"['\"]?[:=]['\"]?[^'\"]+['\"]?"
但这与String的结尾匹配,因此它包含plan:complete。
关于如何结束比赛的任何提示?它应该寻找一个commo,或者如果没有逗号是行尾,或者在下一个=
或:
答案 0 :(得分:3)
答案 1 :(得分:1)
我的建议是使用更复杂的正则表达式,这将允许您在字符串中找到任何值。将此片段应用于java regexp dialect。
查找所有值:
/[=:]\s*['"]?([\w ]+)['"]?(?:,|$)/gm
对于某些键(f.e.地址):
/ \ baddress ['“]?\ s * [=:] \ s * ['”]?([\ w] +)['“]?(?:,| $)/ gm
答案 2 :(得分:0)
在所有情况下,地址都在第二个和第三个逗号之间,因此您也可以进行拆分;
String longstring = "name:\"tony\", age:49, \"address\": \"france\", \"plan\":\"complete\"";
String splitted[] = longstring.split(",");
String Address = splitted[2];
System.out.println(Address);