繁体   English   中英

如何使用正则表达式从字符串中提取参数和值

[英]How to extract parameter and values from a string using regex

我需要从字符串中提取一个参数和该参数的值((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

您可以使用以下内容:

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));
}

在这里尝试!

请注意,您需要调用Matcherfind() matches()或更罕见lookingAt()然后才能使用它的大部分其他方法,包括toMatchResult()你试图使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM