[英]Extarct data using pattern matching in java
I have a requriement in Java to extarct data from the big string using Pattern.compile()
. 我有Java要求使用
Pattern.compile()
从大字符串中提取数据。
INPUT STRING : 输入字符串:
[{"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"},{"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}]
OUTPUT : set of 2 string 输出:2个字符串的集合
first : {"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"}
second : {"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}
I am trying below code : 我正在尝试下面的代码:
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));
}
If I understood you correctly, here is the regex: {(.*)}
. 如果我对您的理解正确,那么这里是正则表达式:
{(.*)}
。 Note, that you need to mark it as ungreedy. 请注意,您需要将其标记为不满意。
Regex demo: https://regex101.com/r/x6ZX56/2 正则表达式演示: https : //regex101.com/r/x6ZX56/2
Result: 结果:
1 1个
Full match: {"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"}
完全匹配:
{"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"}
Group 1: "KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"
组1:
"KEY1" :"VALUE1","KEY2" :"VALUE2","KEY3" :"VALUE3","KEY4" :"VALUE4"
2 2
Full match: {"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}
完全匹配:
{"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"}
Group 1: "KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"
组1:
"KEY1" :"VALUE5","KEY2" :"VALUE6","KEY3" :"VALUE7","KEY4" :"VALUE8"
Java example: 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));
}
Note, that I used escaping characters for the input string. 注意,我在输入字符串中使用了转义字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.