Tom*_*tny 2 python regex error-handling exception
我有两个问题:
1)我有一个正则表达式([A-Z][a-z]{0,2})(\d*),我正在使用Pythonre.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
Run Code Online (Sandbox Code Playgroud)
2)第二个问题是,如果输入字符串错误,我应该引发什么样的异常。
谢谢你,托马斯
您可以使用以下几种不同的方法:
比较长度
请注意,如果您想避免两次解析字符串,您还可以将此方法与现有代码结合使用,而不是将其作为额外的步骤。
整个字符串的正则表达式
您可以检查此正则表达式是否匹配整个字符串:
^([A-Z][a-z]{0,2}\d*)*$
Run Code Online (Sandbox Code Playgroud)
标记化
您可以使用以下正则表达式来标记原始字符串:
[A-Z][^A-Z]*
Run Code Online (Sandbox Code Playgroud)
然后检查每个标记,看看它是否与您的原始正则表达式匹配。