如何使用正则表达式选择除缩写以外的带空格的句号



我想去掉句子末尾的点,但不想去掉缩写中的点。例如,我想要字符串:

Hello everyone. The U.S.A. is bigger than europe

成为

Hello everyone The U.S.A. is bigger than europe

我还不太熟悉regex。所以我尝试使用regex

.s

但它不起作用。有人能帮我吗?使用regex,这可能吗?

编辑:这是我想要的正则表达式:

(?<![a-zA-Z].[a-zA-Z]).s

这将起作用:

[.!?](?=s+[^a-z]|s*$)

https://regex101.com/r/agdiTH/1

您想要匹配一个点和一个前面没有字母点字母的空白。

您可以使用以下两个表达式之一:

(?<![a-zA-Z].[a-zA-Z]).(?=s)     # ASCII only version
(?<![^Wd_].[^Wd_]).(?=s)     # Supports all Unicode letters

查看regex演示

详细信息

  • (?<![a-zA-Z].[a-zA-Z])-如果当前位置的左侧有ASCII字母、点和ASCII字母([^Wd_]与任何Unicode字母匹配(,则负查找将导致匹配失败
  • .-一个点
  • (?=s)-空白应该紧跟在点后面

最新更新