关于正则表达式:如何提取点(。)结束的句子?

How to extract dot(.) ended sentence?

我需要提取以点'.'结尾的句子,但不要提取' ...'结尾的句子(空白和三个点)。

例子:

1
2
I love you.
I love you too ...

我想匹配第一句而不是第二句。

i图像python样式伪代码:

1
2
3
4
5
6
7
8
9
10
for string in strings:
    checker1 = (string == .)
    if checker:
        checekr2 = (prev_string(string) != blank)
        if checker2:
            extract_all_strings()
        else:
            pass
    else:
        pass

但是我不能想象正则表达式代码。


这里你可以使用一个非常简单的regex:

1
[\w ]+\.$

在Regex101上测试溶液。

  • [\w ]是一组允许的字符,其中\w代表[a-zA-Z0-9_]中的任何字符,代表空间本身。
  • [\w ]+,其中+表示,上面所述的组中的字符可能出现在一到无限次之间。
  • \.是必须转义的点本身,否则点.与任何字符都匹配。
  • $代表一根绳子的末端。

这一起确保只捕获以一个点结尾的句子。

另一种不太严格的方法可能是允许任何内容,其中结尾的第二个字符不是点,最后一个字符是点(regex101)。

1
.+[^\.]\.$


您可以使用以下regex:

1
[\w ]+\.(?!\.)

它匹配一个或多个Word字符或Space,然后使用negative look ahead确保只有一个点。


您可以使用(?,请参见演示。