我有一篇文章,里面有一些我想提取的重要信息。重要信息用大括号标记。重要文本有几种不同的“标记”来分组。
一个例子:
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)输出:
稍微重要
提前泰。
您可以使用稍微不同的Pattern
,有两组。比如,
Pattern regexGroup = Pattern.compile("(\\{(.*?)\\GROUP(\\d+)");
Matcher regexMatcher = regexGroup.matcher(data);
然后,您可以使用regexMatcher.group(1)
和regexMatcher.group(2)
访问数据(检查第二个结果的重要性)。