请给出以下格式的正则表达式

时间:2015-03-27 09:18:53

标签: java regex

我在下面给出了示例数据,请给我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" 

请尽快给我解决方案

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式进行拆分:

String[] tok = str.split("(?=(?:(?:[^\"]*\"){2})*[^\"]*$) +");

RegEx Demo

只有当它在引号之外时才会匹配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"

Code Demo

答案 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);

这是一个可视化:

Visual regex

您可以按name更改密钥address\w+,以获得更通用的内容。