正则表达式匹配大写字母,数字或大写字母,小写字母和数字

Cod*_*599 7 c# regex string

我正在研究一种能够计算分子量的应用程序,我需要将一个字符串分成不同的分子.我一直在使用正则表达式来做这个,但我还没有完全开始工作.我需要正则表达式来匹配像H2OCl4和Na2H2O这样的模式,它会将其分解为匹配:

  1. H2
  2. Ø
  3. CL4

  1. NA2
  2. H2
  3. Ø

我一直在研究的正则表达式是这样的:

([A-Z]\d*|[A-Z]*[a-z]\d*)
Run Code Online (Sandbox Code Playgroud)

它真的很接近,但它目前打破了匹配:

  1. H2
  2. Ø
  3. C
  4. L4

我需要将Cl4视为一场比赛.任何人都可以帮助我完成我在此遗漏的最后一部分.我对正则表达式很新.谢谢.

Jim*_*hel 10

我想你想要的是什么 "[A-Z][a-z]?\d*"

也就是说,一个大写字母,后跟一个可选的小写字母,后跟一个可选的数字字符串.

如果你想匹配0,1或2个小写字母,那么你可以写:

"[A-Z][a-z]{0,2}\d*"

但请注意,这两个正则表达式都假定输入数据有效.鉴于数据不佳,它会跳过不良数据.例如,如果输入字符串是"H2ClxxzSO4",那么您将获得:

  1. H2
  2. CLX
  3. 小号
  4. O4

如果要检测错误数据,则需要检查Index返回Match对象的属性,以确保它等于起始索引.

  • 为了完整起见,您可能需要两个可选的小写字母来处理元素113到118,它们仍被命名为Ununtrium(符号Uut)等. (2认同)