我想去掉句子末尾的点,但不想去掉缩写中的点。例如,我想要字符串:
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)
-空白应该紧跟在点后面