【问题标题】:How to remove smaller sentences from a document with multiple paragraphs如何从包含多个段落的文档中删除较小的句子
【发布时间】:2017-11-24 23:35:26
【问题描述】:

在具有句子序列的段落中,我想删除由少于 3 个单词组成的句子。句子以句号结束。

示例输入:
主题:印度。这是一个例句。 . 2017年印度的gdp是x.x。句号之间和句号之后可能有多个空格。印度。对外政策。 2.5. 4.5 .也有一些随机的十进制数。电子邮件:abc@google.com。

样本输出:
这是一个例句。印度的 gdp 是 x.x in 2017. 期间和之后可能有多个空格。还有一些随机的十进制数。

【问题讨论】:

    标签: regex


    【解决方案1】:

    简介

    由于您尝试匹配的文本的性质以及您正在使用它做什么,此正则表达式可能不适用于您的所有情况,但它确实适用于您提供的文本示例。


    代码

    See regex in use here

    (?:^|(?<=\.\s))(?:\S*\s*){1,3}(?:\.\s+|\.$)
    

    结果

    输入

    主题:印度。这是一个例句。 .印度的 gdp 是 x.x in 2017 年。句号之间和句号之后可能有多个空格。 印度。对外政策。 2.5. 4.5 .也有一些随机的十进制数。 电子邮件:abc@google.com。

    输出

    这是一个例句。 2017年印度的gdp是x.x。也许有 在句点之间和句点之后有多个空格。一些随机小数 数字也是。


    说明

    • (?:^|(?&lt;=\.\s)) 匹配以下任意一项
      • ^ 在行首断言位置
      • (?&lt;=\.\s) 正向后视确保前面是一个文字点,后跟一个空格字符
    • (?:\S*\s*){1,3} 匹配以下 1 到 3 次
      • \S* 匹配任意数量的非空白字符
      • \s* 匹配任意数量的空白字符
    • (?:\.\s+|\.$) 匹配以下任意一项
      • \.\s+ 匹配一个文字点,后跟一个或多个空白字符
      • \.$ 匹配文字点并在行尾断言位置

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 2013-08-13
      • 1970-01-01
      • 2016-09-18
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      相关资源
      最近更新 更多