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

如何编写正则表达式匹配官方及形似小写的字母(排除数字上下标)?

匹配官方小写字母及形似小写的上下标字符的正则方案

问题背景

要编写正则匹配两类字符:一是Unicode官方定义的小写字母,二是形似小写的上下标字符,但需排除上下标中的数字(如²、₃这类)。之前的尝试存在以下问题:

  • [a-z]+:仅匹配ASCII小写,漏过ñ这类Unicode小写字母;
  • \p{Ll}+:匹配所有官方小写,但无法匹配ₗ、ₒ这类未被归类为小写的上下标形似字符;
  • \p{Ll}+|\p{In_Superscripts_and_Subscripts}+:过于宽泛,会误匹配A²中的数字上标²。

解决方案

根据正则引擎的不同,提供两种精准匹配的写法:

1. 支持Unicode属性交集的引擎(PCRE、PHP、Python regex库等)

[\p{Ll}\p{In_Superscripts_and_Subscripts}&&\P{Numeric_Type=Digit}]+
  • \p{Ll}:匹配所有Unicode官方定义的小写字母;
  • \p{In_Superscripts_and_Subscripts}&&\P{Numeric_Type=Digit}:筛选出属于上下标字符区块,但不属于数字类型的字符,完美排除上下标数字,仅保留形似小写的字母类上下标。

2. 不支持属性交集的引擎(JavaScript等)

使用正向预查结合字符类实现:

(?:\p{Ll}|(?=\p{In_Superscripts_and_Subscripts})\P{Numeric_Type=Digit})+
  • 分支1:匹配官方小写字母\p{Ll};
  • 分支2:通过(?=\p{In_Superscripts_and_Subscripts})限制字符属于上下标区块,再用\P{Numeric_Type=Digit}排除数字类型,最终仅保留目标字符。

验证效果

  • 对ESPAñOL:可匹配到ñ;
  • 对THIS LOOKS A LOT LIKE ₗₒ𝓌ₑᵣ𝒸ₐₛₑ:可完整匹配ₗₒ𝓌ₑᵣ𝒸ₐₛₑ;
  • 对A²:不会匹配到数字上标²。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:37:49