簡體   English   中英

如何在java中使用正則表達式提取段落中的句子

[英]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,請記住在將其編碼為字符串時將反斜杠加倍。

基本上,它會做的是匹配一個文字點,然后是任何不是點的字符串(第一句話),另一個文字點,包含您的文字的中間句子,然后是另一個不是點的字符序列點(第三句)。

Regex101 上的演示

我為我的一個項目制作了這門課。 希望能幫助到你。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM