如何在 Java 中使用正则表达式提取包含表达式的段落

问题描述 投票:0回答:0

例如,如果这是文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit。 Nullam sit amet tellus sit amet libero facilisis malesuada。 Aliquam erat volutpat。 Donec eget auctor 奥迪奥。 Sed quam diam,mollis eu 中的 varius,mollis vel felis。 Vestibulum vitae porta enim.

Proin nisi ante, imperdiet dignissim ultricies eget, tristique eget massa。 Vestibulum at condimentum nisi。 Phasellus venenatis, ipsum id facilisis euismod, lorem risus hendrerit elit, sit amet porttitor justo sem laoreet massa. Sed id molestie dui, sit amet interdum neque.

我希望正则表达式字符串匹配整个 (Proin...neque.) 段落,给定 wordToSearch dignissim.

目前我已经能够设置一个正则表达式字符串来提取包含给定表达式的单个句子(位于点之间的字符串)。这样设置:

public static final String regexPhrase(String wordToSearch) {
        String regexPhraseString = "(((?<=\\.)((.(?![^p]\\.))+?))*?(\\b" + wordToSearch
                + "\\b{1,})(.*?)(p\\. .*?)*?(\\.))";
        return regexPhraseString;
    }

这对我来说很好用,因为它尊重 APA 引用的形式(姓氏,年份,第 X 页)。

但是,当试图用整个段落而不是句子来实现相同的想法时,我找不到解决方法。我最初的想法是将一个段落定义为(点+换行)...(点+换行)之间的字符串。 我已经为此编写了一个类似的代码,用

\\.
替换
\\.\n
并擦除
[p^]
,但似乎不起作用:

public static final String regexParagraph(String wordToSearch) {
        String regexParagraphString = "(((?<=\\.\n)((.(?!\\.\n))+?))*?(\\b" + wordToSearch
        + "\\b{1,})(.*?)(\\.\n))";
        return regexParagraphString;
    }

实际上它适用于简单的文本,但在更复杂(又长又丰富)的文本中返回不需要的输出。

我真的很感激这些正则表达式的帮助!

PD:我已经把 Pattern 和 Matcher 都整理好了,只是正则表达式字符串给我带来了麻烦。

java regex string full-text-search paragraph
© www.soinside.com 2019 - 2024. All rights reserved.