我的文字中包含一些我想介绍的重要信息。
重要信息标记在大括号中。 重要文本有几种不同的"标记"将其分为几组。
一个例子:
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.
为了找到这些"重要文本"块,我使用了正则表达式(取" {"和" 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 textchunks ....等
有没有办法只制作一个正则表达式一次找到所有这些组并使用regexMatcher.group(1-3)进行访问?
像这样的东西:
regexMatcher.group(1)输出:
this is important
also Important
regexMatcher.group(2)输出:
not so important
regexMatcher.group(3)输出:
slightly important
提前输入。
您可以使用稍微不同的Pattern,分为两组。 喜欢,
Pattern regexGroup = Pattern.compile("(\\{(.*?)\\GROUP(\\d+)");
Matcher regexMatcher = regexGroup.matcher(data);
然后,您可以使用regexMatcher.group(1)和regexMatcher.group(2)访问数据(检查重要性的第二个结果)。
啊,我明白了。 但是这些块并不总是标记为" GROUP1-?"。 我以这个为例(不好)。 它应该与{} GROUP,{} PERSON,{} ANIMAL等一起使用。...它是由某种NER提取程序注释的文本。
同样的想法,只需要使用正则表达式来匹配([GROUP|PERSON|ANIMAL])
(\\{(.*?)\\}\\\\(GROUP|PERSON)(\\d+)