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

JavaScript高级正则:按三类字符分组统计数量

解决字符分组统计的正则方案

嘿,我明白你卡在正则转义和分组统计的地方了——这事儿确实容易在特殊字符上踩坑,尤其是字符集([])里的规则特别容易搞混。咱们一步步拆解,搞定这个问题:

先理清正则字符集的核心规则

在正则的字符集[]里,大部分特殊字符不需要转义,但有几个例外必须注意:

  • -:如果放在字符集中间会被当成范围运算符(比如a-z),所以要么转义\-,要么把它放在字符集的开头或末尾;
  • ^:放在字符集开头是取反标记,如果要把它当成普通字符,要么转义\^,要么放在非开头位置;
  • [和]:必须转义\[和\],否则会被当成字符集的起止边界;
  • 其他字符(比如|、{}、~)在字符集里都是普通字符,转义不转义都可以,但转义后可读性更强,避免和正则的其他语法混淆。

针对三类字符的正则编写

第一类字符正则

把你列出的所有字符、空格、换行(\n)、回车(\r)放进字符集,注意把-放在末尾避免解析成范围:

[a-zA-Z0-9@¡¿£_!$"¥#è¤é%ù&ìYò(Ç)*:Ø+;øÆ,<æß.>É/?ÄäÖöÑñÜü§à \n\r-]

第二类字符正则

针对|^{}[]~€这些字符,需要转义[、]和^(避免取反),|也可以转义增强可读性:

[\|^\{\}\[\]~€]

第三类字符正则

直接对前两类的所有字符取反即可(注意把前两类的字符整合到一个字符集里,前面加^):

[^a-zA-Z0-9@¡¿£_!$"¥#è¤é%ù&ìYò(Ç)*:Ø+;øÆ,<æß.>É/?ÄäÖöÑñÜü§à \n\r-\|^\{\}\[\]~€]

代码实现示例(Python)

这里用两种方式实现统计,你可以选适合自己的:

方式1:用findall批量匹配

import re

# 替换成你的目标字符串
target_text = "Hello! @World | {} [] ~€ 测试字符 123"

# 定义三类正则模式
pattern_group1 = r'[a-zA-Z0-9@¡¿£_!$"¥#è¤é%ù&ìYò(Ç)*:Ø+;øÆ,<æß.>É/?ÄäÖöÑñÜü§à \n\r-]'
pattern_group2 = r'[\|^\{\}\[\]~€]'
pattern_group3 = r'[^a-zA-Z0-9@¡¿£_!$"¥#è¤é%ù&ìYò(Ç)*:Ø+;øÆ,<æß.>É/?ÄäÖöÑñÜü§à \n\r-\|^\{\}\[\]~€]'

# 统计每类字符数量
count1 = len(re.findall(pattern_group1, target_text))
count2 = len(re.findall(pattern_group2, target_text))
count3 = len(re.findall(pattern_group3, target_text))

print(f"第一类字符数:{count1}")
print(f"第二类字符数:{count2}")
print(f"第三类字符数:{count3}")

方式2:遍历字符逐个匹配(效率更高)

如果字符串很长,遍历逐个判断的性能会更好:

import re

target_text = "Hello! @World | {} [] ~€ 测试字符 123"

# 预编译正则,提升匹配效率
group1_re = re.compile(r'[a-zA-Z0-9@¡¿£_!$"¥#è¤é%ù&ìYò(Ç)*:Ø+;øÆ,<æß.>É/?ÄäÖöÑñÜü§à \n\r-]')
group2_re = re.compile(r'[\|^\{\}\[\]~€]')

count1 = count2 = count3 = 0

for char in target_text:
    if group1_re.match(char):
        count1 += 1
    elif group2_re.match(char):
        count2 += 1
    else:
        count3 += 1

print(f"第一类:{count1},第二类:{count2},第三类:{count3}")

额外提醒

  1. 如果用其他语言(比如JavaScript、Java),正则语法略有差异:比如Java里需要双重转义(\\代替\);
  2. 确保代码文件保存为UTF-8编码,避免特殊字符(比如¡、¿)乱码;
  3. 可以用正则测试工具输入测试字符串,验证你的正则是否匹配正确,快速排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:26