【发布时间】:2019-05-29 09:37:12
【问题描述】:
我有一个字符串:
link = "http://www.this_is_my_perfect_url.com/blah_blah/blah_blah?=trololo"
我有一个函数可以从该 url 返回域名,如果没有找到,则返回 '':
def get_domain(url):
domain_regex = re.compile("\:\/\/(.*?)\/|$")
return re.findall(domain_regex, str(url))[0].replace('www.', '')
get_domain(link)
返回结果:
this_is_my_perfect_url.com
|$ 返回 '' 如果正则表达式不匹配。
有没有办法在正则表达式中实现默认值Error,这样我就不必在函数内部进行任何检查?
所以如果link = "there_is_no_domain_in_here" 则函数返回Error 而不是''。
【问题讨论】:
-
不,您不能在正则表达式中设置任何内容,它只会返回在输入文本中找到的内容。您必须在代码中返回
Error。 -
正如 WiktorStribiżew 所提到的,您需要根据我在下面的回答在您的正则表达式匹配逻辑@milka1117 之外检查这一点
-
您的意思是“返回文字字符串'错误'”而不是“引发错误/异常”?
-
作为旁注:请考虑返回
"Error"是否适合您的情况 - 如果您的网址是http://www.error.com怎么办?如果出于某种原因您不想引发错误,您可能会返回None,这在 Python 中通常用于表示 nothing -
是的,@Daweo 更好地表达了我试图表达的观点。将错误条件作为字符串返回不是 Pythonic。