我正在研究正则表达式,而我正在尝试在找不到字符串时引发ValueError
。以下是我想要做的一些示例代码。
def parse_email (s):
import re
re_names = re.compile ('''^regex code for pattern matching''',re.VERBOSE)
if not re_names.match(s).group('uid'): raise ValueError
uid = re_names.match(s).group('uid')
domain = re_names.match(s).group('domain')
tup = uid, domain
return tup
parse_email('e l@gmail.com')
我希望parse_email('e l@gmail.com')
函数返回ValueError
而不是我得到AssertionError。提前感谢您的帮助!
答案 0 :(得分:0)
您遇到的问题是,如果没有成功匹配,程序将无法访问您的raise ValueError
语句。相反,您可能会检查是否有任何匹配,如果没有,则提出您想要的错误:
import re
def parse_email(s):
re_names = re.compile ('''^
(?P<uid>[\w]+)
@
(?P<domain>[\w.-]+)?
$
''',
re.VERBOSE)
if not re_names.match(s):
raise ValueError
uid = re_names.match(s).group('uid')
domain = re_names.match(s).group('domain')
tup = uid, domain
return tup
答案 1 :(得分:0)
以下是我最终解决问题的方法。
import re
def parse_email(s):
re_names = re.compile ('''regex stuff
''',
re.VERBOSE)
try:
uid = re_names.match(s).group('uid')
domain = re_names.match(s).group('domain')
tup = uid, domain
return tup
except AssertionError:
raise ValueError