在一个包含句子序列的段落中,我想删除由少于3个单词组成的句子。句子以句号结束。
示例输入:
主题:印度。这是一个例句。 。印度的国内生产总值是2017年的x.x。期间之间和之后可能有多个空格。印度。对外政策。 2.5。 4.5。一些随机十进制数也是。电子邮件:abc@google.com。
示例输出:
这是一个例句。印度的国内生产总值是x.x in
2017.期间之间和之后可能有多个空格。一些随机十进制数字。
答案 0 :(得分:1)
由于您尝试匹配的文字的性质以及您正在使用的内容,此正则表达式可能不适用于您的所有案例,但它适用于您提供的文本示例。
(?:^|(?<=\.\s))(?:\S*\s*){1,3}(?:\.\s+|\.$)
主题:印度。这是一个例句。 。印度的国内生产总值是x.x in 2017年。期间之间和之后可能有多个空格。 印度。对外政策。 2.5。 4.5。一些随机十进制数也是。 电子邮件:abc@google.com。
这是一个例句。印度的国内生产总值是2017年的x.x。也许有 期间之间和之后是多个空格。一些随机小数 数字也是。
(?:^|(?<=\.\s))
匹配以下任一项
^
在行首处断言位置(?<=\.\s)
确保前面的正面背后是一个字面点后跟一个空格字符(?:\S*\s*){1,3}
匹配以下1至3次
\S*
匹配任意数量的非空白字符\s*
匹配任意数量的空白字符(?:\.\s+|\.$)
匹配以下任一项
\.\s+
匹配一个文字点后跟一个或多个空格字符\.$
匹配文字点并断言行尾的位置