Skip to main content
 首页 » 编程设计

python之如何检查正则表达式是否完全匹配字符串,即之字符串不包含任何额外字符

2025年05月04日20lexus

我有两个问题:

1) 我有一个正则表达式 ([A-Z][a-z]{0,2})(\d*) 我正在使用 Python 的 re.finditer() 来匹配合适的字符串。我的问题是,我只想匹配不包含额外字符的字符串,否则我想引发异常。

我想捕捉以下模式: - 大写字母,后跟 0、1 或 2 个小写字母,后跟 0 个或更多数字。

该模式代表一个化学式,即原子后跟它出现的次数。我想将原子与它的出现次数放入字典中,因此我需要将原子(大写字母后跟 0、1 或 2 个小写字母)和数字分开,但请记住它们属于一起。

例子:

C6H5Fe2I   # this string should be matched successfully. Result: C6 H5 Fe2 I 
H2TeO4     # this string should be matched successfully Result: H2 Te O4 
H3PoooO5   # exception should be raised 
C2tH6      # exception should be raised 

2) 第二个问题是如果输入字符串错误,我应该抛出什么样的异常。

谢谢你,托马斯

请您参考如下方法:

您可以使用以下几种不同的方法:

比较长度

  • 找出原始字符串的长度。
  • 将匹配字符串的长度相加。
  • 如果两个数字不同,则有未使用的字符。

请注意,如果您想避免两次解析字符串,您也可以将此方法与现有代码结合使用,而不是将其作为额外的步骤执行。

整个字符串的正则表达式

你可以检查这个正则表达式是否匹配整个字符串:

^([A-Z][a-z]{0,2}\d*)*$ 

(Rubular)

标记化

您可以使用以下正则表达式对原始字符串进行分词:

[A-Z][^A-Z]* 

然后检查每个标记以查看它是否与您的原始正则表达式匹配。