我在Java中要求使用Pattern.compile()
从大字符串中提取数据。
INPUT STRING:
[{"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"},{"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}]
输出: 一套2个字符串
first : {"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"}
second : {"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}
我正在尝试下面的代码:
ArrayList<String> token_data = new ArrayList<String>();
String myString = "[{"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"},{"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}]"
System.out.println(myString);
Pattern p1 = Pattern.compile("\"([^\"]+)\"");
Matcher m = p1.matcher(myString);
while(m.find())
{
System.out.println(m.group(1));
//m.group(1);
token_data.add(m.group(1));
}
答案 0 :(得分:1)
如果我理解正确,这是正则表达式:{(.*)}
。请注意,您需要将其标记为不合格。
正则表达式演示:https://regex101.com/r/x6ZX56/2
结果:
<强> 1 强>
完全匹配:{"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"}
第1组:"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"
<强> 2 强>
完全匹配:{"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}
第1组:"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"
Java示例:
String input = "[{\"KEY1\" :\"VALUE1\",\"KEY2\" :\"VALUE2\",\"KEY3\" :\"VALUE3\",\"KEY4\" :\"VALUE4\"},{\"KEY1\" :\"VALUE5\",\"KEY2\" :\"VALUE6\",\"KEY3\" :\"VALUE7\",\"KEY4\" :\"VALUE8\"}]";
Pattern pattern = Pattern.compile("\\{(.*?)}");
Matcher m = pattern.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}
请注意,我使用转义字符作为输入字符串。