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

如何用C++ Regex在全为10位的单词串中找出唯一不重复单词

用正则高效提取唯一不重复的10位单词

当然可行!针对你这种所有单词长度固定为10的场景,正则表达式不仅能实现需求,还能凭借引擎的高度优化特性,在很多场景下比普通的拆分统计方法更高效。

核心正则表达式

针对你给出的无分隔符连续字符串场景,直接用这个正则就能精准定位唯一不重复的10位单词:

(\w{10})(?![\s\S]*\1)

原理拆解

  • (\w{10}):捕获一个由10个字母/数字/下划线组成的单词块(如果你的单词包含其他特殊字符,把\w换成.或者更精准的字符集即可,比如仅字母用[a-zA-Z])。
  • (?![\s\S]*\1):这是负向预查,作用是确保当前捕获的10字符块,在整个字符串的剩余部分([\s\S]*匹配任意字符,包括换行)不会再次出现。因为重复的单词一定会在后续位置再次出现,所以这个预查会直接排除它们,只留下唯一的那个单词。

实际使用示例(以Python为例)

import re

target_str = "innovationinnovationmotivationappearancemotivationinnovation"
result = re.search(r'(\w{10})(?![\s\S]*\1)', target_str)
if result:
    print(result.group(1))  # 输出:appearance

关于效率的说明

因为所有单词长度固定为10,正则引擎不需要做额外的拆分判断,扫描过程是按10字符块步进的。加上负向预查的逻辑是引擎原生优化过的,对于超长字符串来说,这个方法的效率甚至会超过先拆分所有单词再统计频率的常规方案——毕竟正则引擎的底层实现都是高度优化的C代码。

如果你的场景中存在多个唯一单词,这个正则会匹配所有符合条件的10位块;如果只需要第一个出现的唯一单词,直接用re.search(非全局匹配)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:38:52