如何编写正则表达式统计文本语料中同一辅音出现超四次的单词?
统计含同一辅音超4次的单词数量:正则方案
你当前的正则([b-df-hj-np-tv-z])\1{3,}只能匹配连续重复4次以上的辅音,但需求是统计单词中某辅音**总出现次数超过4次(即≥5次)**的单词数量,以下是可行方案:
核心正则表达式
\b(?=\w*([b-df-hj-np-tv-z])(?:\w*\1){4})\w+\b
正则逻辑解释
\b:匹配单词边界,确保处理的是完整单词(?=\w*([b-df-hj-np-tv-z])(?:\w*\1){4}):正向预查,验证单词满足条件:- 捕获组
([b-df-hj-np-tv-z])匹配任意一个辅音 (?:\w*\1){4}确保该辅音在单词中至少再出现4次(加上第一次捕获的,总次数≥5)
- 捕获组
\w+:匹配整个符合条件的单词
实际使用示例(以Python为例)
结合代码可直接统计文本中这类单词的数量:
import re # 示例语料 corpus = "Sonnentrunkenheiten fliegen Schweppenstetten abcdeee ffghhjjj kkkkk" # 正则模式(添加re.IGNORECASE可忽略大小写,按需调整) pattern = r'\b(?=\w*([b-df-hj-np-tv-z])(?:\w*\1){4})\w+\b' # 提取所有符合条件的单词 matches = re.findall(pattern, corpus, re.IGNORECASE) # 统计数量(需去重则用len(set(matches)),保留重复直接用len(matches)) count = len(matches) print(f"符合条件的单词数量:{count}")
注意事项
- 若需支持德语特殊辅音(如ß),可将辅音范围调整为
[b-df-hj-np-tv-zß] - 需区分大小写时,去掉
re.IGNORECASE参数即可
内容的提问来源于stack exchange,提问作者Patrick Huber
相关产品推荐
相关产品推荐

