【发布时间】:2010-10-07 07:29:31
【问题描述】:
我有两个问题:
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)第二个问题是如果输入字符串错误,我应该引发什么样的异常。
谢谢你,托马斯
【问题讨论】:
-
我无法理解您要匹配的模式。
-
如果我错了,请纠正我。给定
C6H5Fe2I,您需要以下内容:C6、H5、Fe2和I。不是吗? -
@JoshD:他试图匹配的模式在问题的第一行。
-
如果模式不匹配,您似乎想引发异常。这是为什么呢?
-
@Mark Byers,该模式与他所显示的不匹配,嗯,不是直接匹配。我现在明白我的意图了。
标签: python regex exception-handling error-handling