我需要从字符串((created_date{[1976-03-06T23:59:59.999Z TO *]}|1))
中提取一个参数和该参数的值。这里参数是created_date。值为1976-03-06T23:59:59.999Z TO *
,其中*
表示没有限制。我需要提取数据,如下所示,即它应该是字符串数组。
created_date
1976-03-06T23:59:59.999Z
*
1
我已经尝试了一些在线正则表达式工具来找到合适的正则表达式,还尝试了一些基于反复试验的代码。
String str = "((created_date{[1976-03-06T23:59:59.999Z TO *]}|1))";
String patt = "\\((.*)\\{(.*)\\}\\|(1|0)\\)";
Pattern p = Pattern.compile(patt);
Matcher m = p.matcher(str);
MatchResult result = m.toMatchResult();
System.out.println(result.group(1));
相似性result.group(2)
和3
..取决于result.groupCount()
。
我需要提取数据,如下所示,即它应该是字符串数组。
created_date
1976-03-06T23:59:59.999Z
*
1
答案 0 :(得分:1)
您可以使用以下内容:
String str = "((created_date{[1976-03-06T23:59:59.999Z TO *]}|1))";
String patt = "\\(\\(([^{]+)\\{\\[([^ ]+) TO ([^]]+)]}\\|([01])\\)\\)";
Pattern p = Pattern.compile(patt);
Matcher m = p.matcher(str);
if (m.matches()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
System.out.println(m.group(4));
}
尝试here!
请注意,您需要先调用Matcher
的{{1}},find()
或更罕见的matches()
,然后才能使用其他大多数方法,包括{{ 1}}您正在尝试使用。