提问者:小点点

Java创建正则表达式组


我有一篇文章,里面有一些我想提取的重要信息。重要信息用大括号标记。重要文本有几种不同的“标记”来分组。

一个例子:

Lorem ipsum dolor sit {this is important}\GROUP1 amet, consetetur sadipscing elitr, sed diam {also Important}\GROUP1 nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, {not so important}\GROUP2 sed diam voluptua. At vero eos et accusam et {slightly important}\GROUP3 justo duo dolores et ea rebum. Stet clita kasd gubergren.

为了找到这些“重要文本”块,我使用regex(取“{”和“\GROUP1”之间的东西):

Pattern regexGroup1 = Pattern.compile("(\\{(.*?)\\GROUP1"));  
Matcher regexMatcher = regexGroup1.matcher(data);  
regexMatcher.group(); 

查找GROUP1文本块。

 Pattern regexGroup2 = Pattern.compile("(\\{(.*?)\\GROUP2"));  
 Matcher regexMatcher = regexGroup2.matcher(data);  
 regexMatcher.group();  

找到GROUP2文本块……等等。

是否有一种方法可以只创建1个正则表达式来一次找到所有这些组并使用regexMatcher.group(1-3)访问它们?

类似这样:regexMatcher.group(1)输出:

这很重要
也很重要

regexMatcher.group(2)输出:

没那么重要

regexMatcher.group(3)输出:

稍微重要

提前泰。


共1个答案

匿名用户

您可以使用稍微不同的Pattern,有两组。比如,

Pattern regexGroup = Pattern.compile("(\\{(.*?)\\GROUP(\\d+)");  
Matcher regexMatcher = regexGroup.matcher(data);  

然后,您可以使用regexMatcher.group(1)regexMatcher.group(2)访问数据(检查第二个结果的重要性)。