我在下面给出了示例数据,请给我java正则表达式以获得预期输出。
String str="name=\"balaji\" address=\"bangalore madiwala\"";
我尝试了类似下面的内容,
String[] str1=str.split("\\s");
输出:
str[0]-> name="balaji"
str[1]-> address="bangalore
str[2]-> madiwala"
预期产出:
str[0]-> name="balaji"
str[1]-> address="bangalore madiwala"
请尽快给我解决方案
提前致谢。
答案 0 :(得分:0)
您可以使用此正则表达式进行拆分:
String[] tok = str.split("(?=(?:(?:[^\"]*\"){2})*[^\"]*$) +");
只有当它在引号之外时才会匹配1个或多个空格,方法是在空格后面查看引号数。
<强>代码:强>
String str="name=\"balaji\" address=\"bangalore madiwala\"";
String[] toks = str.split("(?=(?:(?:[^\"]*\"){2})*[^\"]*$) +");
for (String tok: toks)
System.out.printf("%s%n", tok);
<强>输出:强>
name="balaji"
address="bangalore madiwala"
答案 1 :(得分:0)
使用Pattern
和匹配组:
Pattern p = Pattern.compile("name=(\".*\")\saddress=(\".*\")");
Matcher m = p.matcher("name=\"balaji\" address=\"bangalore madiwala\"");
String name = m.group(1);
String address = m.group(2);
这是一个可视化:
您可以按name
更改密钥address
和\w+
,以获得更通用的内容。