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

求解匹配首尾为相同单词、中间间隔10字符的正则表达式写法

原正则的问题

你写的正则跑不通,核心错了四个地方:

  • (\w)只抓单个单词字符,根本没捕获完整单词,满足不了“首尾为相同单词”的要求
  • .{1,10}匹配的是1到10个任意字符,和你要的“间隔10个字符”的固定长度规则对不上
  • 反向引用前面硬加了\s,要求重复的单词前面必须是空白,会漏掉重复单词挨着标点、特殊符号的情况
  • 单词边界\b位置写错了,第二个\b放在反向引用分组外面,很容易误匹配长单词的片段,比如会把cat 1234567890 category开头的三个字符cat错当成符合要求的匹配项
可用正则方案

基础通用版(两个完整单词中间固定隔10个任意字符)

直接用这个就行:

\b(\w+)\b.{10}\b\1\b

各部分作用:

  • \b(\w+)\b:捕获一个完整的独立单词,两边的\b是单词边界,保证不会抓到长单词里的局部片段
  • .{10}:严格匹配两个单词中间的10个任意字符,要是需要让.能匹配换行,给正则加s单行修饰符就可以
  • \b\1\b:匹配和第一个捕获组内容完全一样的完整单词,同样靠单词边界避免片段误判

精准长度校验版

如果你要求的间隔长度是「第一个单词结束位置到第二个单词开始位置之间严格为10个字符」,不把单词本身长度算进去,可以用零宽断言做校验,避免长度计算偏差:

\b(\w+)\b(?=.{10}\b\1\b)

调整说明

  • 如果你的场景里“单词”包含中文、连字符这类\w(默认匹配字母、数字、下划线)覆盖不到的内容,把\w+换成对应的字符集就行,比如匹配中文单词可以换成[\u4e00-\u9fa5]+
  • 如果间隔长度允许浮动,比如要求间隔1到10个字符,把.{10}改成.{1,10}?就行,加?做非贪婪匹配避免匹配过长的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:06:14