python - 试图用正则表达式拆分句子
问题描述
到目前为止,在这里找到的这个正则表达式在我参与的几乎所有比赛中都很好用。
(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=[.?])\s
感染它甚至可以正确拆分像这样的句子:
Mr. Daniel, who love cakes, is taking a trip to Nevada. Not gonna lie, i would go as well.
进入:
Mr. Daniel, who love cakes, is taking a trip to Nevada.
Not gonna lie, i would go as well.
不幸的是,它没有涵盖一个案例。例如,如果我有这样的句子:
C. Daniel, who love cakes, is taking a trip to Nevada. Not gonna lie, i would go as well.
此正则表达式将拆分为三个子句子:
C.
Daniel, who love cakes, is taking a trip to Nevada.
Not gonna lie, i would go as well.
代替:
C. Daniel, who love cakes, is taking a trip to Nevada.
Not gonna lie, i would go as well.
我们缺少的是这种特定情况是当我们找到一个匹配时,它有一个大写图表,后跟一个点 (.),我们不必拆分。
我仍然不知道如何正确使用正则表达式,所以如果你能告诉我为什么你的答案会起作用,我将不胜感激
解决方案
您可以扩展该模式,在后面添加一个否定的lookbehind (?<!\b[A-Z]\.)
,以断言不是大写字符,后跟.
直接向左。
我认为您也可以在后面省略点,\w.
因为点匹配除换行符以外的任何字符。
(?<!\b[A-Z]\.)(?<!\w\.\w)(?<![A-Z][a-z]\.)(?<=[.?])\s
查看正则表达式演示
推荐阅读
- python - python中的登录-AzurermAccount
- hyperledger-fabric - REST 服务器中的资源名称已更改
- elasticsearch - 如何调试 Fluentd 不向 Elasticsearch 发送数据的原因?
- javascript - 使 Webpack 按特定顺序加载文件
- plsql - 来自 utf8 的 oracle utl_file 编码
- c# - C# Foreach 循环始终创建一个新文件
- rancher - 如何使用rancher api保存主机注册URL
- android - 在内容背景上创建布局
- entity-framework-core - EF Core - 多个拥有的类型映射问题
- angular - 剥离父组件标签