[英]How to extract a sentence in paragraph use Regular Exepression in java
我有一个段落文本。 我想在java中提取包含关键字的两三个句子使用正则表达式
示例:段落:....我的名字是汤姆。 我和家人住在农村。 我喜欢这种动物。 所以我有一只狗和一只猫。 然而,我们吃了很多......
关键词:狗和猫
期望的结果:我喜欢这种动物。 所以我有一只狗和一只猫。 然而,我们吃的很多
注意:我在java中使用正则表达式。
String line = ".My name is Tom. I live with my family in the countryside. I love the animal. So I have a dog and a cat. However, we eat a lot...... "
String pattern = "a dog and a cat";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
boolean value= false;
if (m.find( )) {
System.out.println(m.toMatchResult());
System.out.println(m.groupCount());
System.out.println(m.group());
} else {
System.out.println("False");
}
这是你想要的模式:
\.([^.]+\.[^.]*a dog and a cat[^.]*\.[^.]+)
由于您使用的是 Java,请记住在将其编码为字符串时将反斜杠加倍。
基本上,它会做的是匹配一个文字点,然后是任何不是点的字符串(第一句话),另一个文字点,包含您的文字的中间句子,然后是另一个不是点的字符序列点(第三句)。
我为我的一个项目制作了这门课。 希望能帮助到你。
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class ExtractSentences {
private String paragraph;
private BreakIterator iterator;
private List<String> sentences;
public ExtractSentences(String paragraph) {
this.paragraph = paragraph;
sentences = new ArrayList();
this.extractSentences();
}
public void extractSentences() {
iterator = BreakIterator.getSentenceInstance(Locale.US);
iterator.setText(paragraph);
int lastIndex = iterator.first();
while (lastIndex != BreakIterator.DONE) {
int firstIndex = lastIndex;
lastIndex = iterator.next();
if (lastIndex != BreakIterator.DONE) {
String sentence = paragraph.substring(firstIndex, lastIndex);
sentences.add(sentence);
}
}
}
public String getParagraph() {
return paragraph;
}
public void setParagraph(String paragraph) {
this.paragraph = paragraph;
}
public void setSentences(List<String> sentences) {
this.sentences = sentences;
}
public List<String> getSentences() {
return sentences;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.