如何在段落中提取句子使用java中的Regular Exepression

时间:2016-10-15 01:40:18

标签: java regex

我有段落文字。我想提取两个或三个句子,其中包含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");
      }

2 个答案:

答案 0 :(得分:1)

这是你想要的模式:

\.([^.]+\.[^.]*a dog and a cat[^.]*\.[^.]+)

由于您使用的是Java,因此请记住在将其编码为字符串时将反斜杠加倍。

基本上,它会做的是匹配一个文字点,然后是一个不是点(第一个句子)的字符串,另一个字面点,包含你的文字的中间句子,然后是另一个字符序列是一个点(第三句)。

Demo on Regex101

答案 1 :(得分:0)

我为我的一个项目参加了这堂课。希望对您有所帮助。

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;

    }
}