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

如何用正则匹配大写字母后接小写字母或单独大写字母?

解决正则匹配化学元素符号的问题

你需要调整正则表达式的匹配优先级,让引擎先匹配大写字母+小写字母的组合,再匹配单独的大写字母,这样就不会把类似Ni的元素拆分开。

可行的正则表达式及代码示例:

import re
a = 'C57H38BN6Ni(1-,3)'
result = re.findall('[A-Z][a-z]|[A-Z]', a)
print(result)  # 输出: ['C', 'H', 'B', 'N', 'Ni']

原理说明

  • [A-Z][a-z]:优先匹配所有大写字母后跟小写字母的组合(比如Ni)
  • |:表示逻辑“或”
  • [A-Z]:再匹配剩余的单独大写字母(比如C、H等)

正则引擎遵循最长匹配优先原则,遇到Ni这类组合时,会优先匹配[A-Z][a-z]模式,不会拆成单个字母匹配。你之前的写法要么把单个大写放在前面导致拆分,要么用了错误的正则语法(比如[[A-Z][a-z]]等价于[A-Za-z],会匹配单个小写字母),所以得到了不符合预期的结果。

内容的提问来源于stack exchange,提问作者Jabed A. Mohammed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:22:05