当前位置: 首页 > 知识库问答 >
问题:

正则表达式查找多行文本中包含句子的段落

逄嘉禧
2023-03-14

我有一个pdf摘录文本,看起来像这样

========================================

标题

字幕

Lorem Ipsum只是印刷的虚拟文本

以及排版业。Lorem Ipsum已被删除

自16世纪以来业界标准的虚拟文本。

字幕

Lorem Ipsum只是打印和打印的虚拟文本

排版业。Lorem Ipsum一直是业界

自16世纪以来的标准虚拟文本。

========================================

每行末尾都有一个新行('\n')。

我试图用正则表达式找到一个给定的句子,并提取找到它的段落。段落是两个连续新行(\n\n)之间的任何内容。请注意,它必须使用lazy方法来完成。

供参考:

>

  • 句子可以以一行开始,以另一行结束

    我无法更改给定的文本格式

    要返回的行数是有限的,因此如果在向上或向下10行之后找不到\n\n,则必须在regex关键字之前返回10行,之后返回10行

  • 共有1个答案

    刘弘新
    2023-03-14

    像这样的事情可能会让你开始:

    import re
    
    data = """
    ggg
    
    aaa aaa aaa
    more bla...
    
    ========================================
    
    TITLE
    
    subtitle
    
    Lorem Ipsum is simply dummy text of the printing
    
    and typesetting industry. Lorem Ipsum has been
    
    the industry's standard dummy text ever since the 1500s.
    
    subtitle
    
    Lorem Ipsum is simply more bla of the printing and
    
    typesetting industry. Lorem Ipsum has been the industry's
    
    standard dummy text ever since the 1500s.
    
    ========================================
    
    bla bla bla bla bla
    more bla...
    
    yet more bla
    """
    
    if __name__ == "__main__":
        to_search = "more bla"
        print(re.findall(r"(?:(?<!^\n)\n(?!^\n)|[^\n])*"+re.escape(to_search)+r"(?:(?<!^\n)\n(?!^\n)|[^\n])*", data, re.DOTALL|re.MULTILINE|re.IGNORECASE))
    

    重要的是用于匹配换行符和跨行搜索的DOTALL和MULTILINE参数。并且lookahead将检测2个连续的\n字符。。。

     类似资料:
    • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

    • 问题内容: 我如何使它对任何数字格式和任何数字都有效 目前仅对1-999-999-9999有效 问题答案: 采用: 参考: 模式匹配

    • 我发现正则表达式不包含101,如下所示: 0*1*0*(1 00 000)*(010)* 我无法理解作者是如何想出这个正则表达式的。所以我只想到了不包含101的字符串: 01000100 我似乎上面的字符串不会与上面的正则表达式匹配。但我不确定。所以尝试在regex101.com上翻译成等效的pcre正则表达式,但也失败了(因为可以看到我的正则表达式甚至不匹配包含单个1的字符串。 我的翻译有什么问

    • 问题内容: 我有此RequestMapping: 我想添加该RequestMapping: 因此,它可以服务于所有“无出发”路线。但是,这会产生冲突,因为“ / route / to-destination-from-departure” URL实际上也与第二个RequestMapping匹配…很公平,所以我的解决方案是指定一个正则表达式: 因此,如果“目标”包含“ -from-”,则Reques

    • 我有一个多行文本,我想从这里匹配单词“Description Amount”和以逗号作为分隔符的随机数字之间的文本。 示例输入: 预期产出: 输入示例: 预期产出: 输入包含多个换行符的变量。我使用了以下正则表达式: 但还需要改进。谢谢你。

    • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。