You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整正则表达式以正确匹配含数字/缩写的完整句子?

解决正则提取完整句子时的缩写/数字后句号误判问题

核心思路

要避免把数字后句号、常见缩写后的句号识别为句子结尾,关键是在匹配句尾标点前,先排除这些特殊的点——让正则知道这些点不是句子的结束标记,而是内容的一部分。

针对德语场景的调整后正则

从你的示例(Dr. Schiwago、1. November)来看是德语语境,用这个正则可以解决问题:

[A-Z][^.!?]*(?:(?:\d\.)|(?:Dr\.|Hr\.|Fr\.|Prof\.|Dr\.Ing\.)[^.!?]*)*[.?!]

正则拆解

  • [A-Z]:匹配句子开头的大写字母(德语句子首字母默认大写)
  • [^.!?]*:匹配句尾标点前的任意非标点字符
  • (?:...):非捕获组,用来处理特殊点的情况,不生成额外捕获结果:
    • (?:\d\.):匹配数字后跟句号的结构(比如1.、24.)
    • (?:Dr\.|Hr\.|Fr\.|Prof\.|Dr\.Ing\.):列出德语里常见的带点缩写,你可以根据实际需求添加更多(比如M\.Sc\.这类学术缩写)
    • [^.!?]*:匹配特殊点之后的内容,直到遇到真正的句尾标点
  • [.?!]:匹配句子真正的结尾标点

扩展适配

如果是英语或其他语言,只需要替换缩写列表即可。比如英语场景可以把缩写部分改成Mr\.|Mrs\.|Ms\.|Dr\.|Prof\.。

要是遇到更复杂的场景(比如带括号的缩写、嵌套缩写),可以进一步扩展正则的规则,但上面的版本已经能覆盖大多数日常使用场景。

测试验证

  • 输入句子:Er kam am 1. November.
    匹配结果:完整提取Er kam am 1. November.,不会拆分成两句
  • 输入句子:Dr. Schiwago.
    匹配结果:完整提取Dr. Schiwago.,不会拆分成两句

内容的提问来源于stack exchange,提问作者user3392296

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:20:18