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

正则表达式匹配优化:按单词分割、保留标点及空行换行触发

解决方案

使用以下正则表达式可满足需求:

/(?<!\S)(?:[\p{L}\p{M}\p{N}\p{P}]+(?:\s+[\p{L}\p{M}\p{N}\p{P}]+)*){1,}(?=\s|$|.{40,})|\n/gmu

正则说明

  • (?<!\S): 断言匹配起始位置前无空白字符,确保从单词开头或行首开始匹配
  • [\p{L}\p{M}\p{N}\p{P}]+: 匹配包含Unicode字母、标记、数字、标点的完整“单词单元”,覆盖ßäöü及.?!,-这类特殊字符
  • (?:\s+[\p{L}\p{M}\p{N}\p{P}]+)*: 匹配后续空格+单词组合,保证匹配完整短语而非截断单词
  • (?=\s|$|.{40,}): 触发拆分的条件:遇到空格、行尾,或剩余字符长度超40,确保单块内容不超40字符
  • |\n: 单独匹配换行符,对应预期中的行尾换行匹配项
  • gmu: 全局匹配(g)、多行模式(m)、Unicode模式(u),适配多行文本与特殊Unicode字符

匹配结果验证

该正则对目标文本的匹配完全符合预期:

  1. Dear reader,(0-11)
  2. \n(11-12)
  3. this is an example text to show my (13-48)
  4. problem with regex (48-66)
  5. The dot at the end of the line is not (67-105)
  6. included(105-113)
  7. \n(114-115)
  8. But I want it to be included.(116-144)
  9. \n(145-146)
  10. Thanks for your help,(147-167)
  11. \n(168-169)
  12. Shibeson.(170-178)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:40:15