我需要从电子邮件中提取域,但我得到 @domain.com 我不需要域开头的 @
I need to extract domain from email but i get @domain.com i dont need the @ at the start of the domain
我需要从电子邮件中提取域,但我得到了@domain.com。我不需要域
开头的 @
class ExtractDomain(webapp2.RequestHandler):
def get(self):
user = (str(users.get_current_user().email()))
domain = re.search("@[\w.]+", user)
thisdomain = domain.group()
template_values = {'user': user, 'thisdomain':thisdomain}
template = jinja2_env.get_template('templates/domain.html')
self.response.out.write(template.render(template_values))
你的正则表达式是 @[\w.]+
,它匹配 @words.com
,你所要做的就是对 @
做一些事情,所以它不在你的结果中。
解决方案 1:回顾
Lookbehinds 测试前面的字符是否匹配,同时不改变结果。 (?<=@)[\w.]+
解决方案 2:捕获组
你可以指定你想要的部分,在你的情况下 @([\w.]+)
在括号中,然后用 $1 调用它。但是,这需要对您的代码稍作修改。
对于第一个解决方案,您只需要更改正则表达式所在的行:domain = re.search("(?<=@)[\w.\-]+", user)
添加了 \-
以便处理一些多词域名,这对问题来说不是必需的。
使用捕获括号:
1- domain = re.search( "@([\w.]+)", user ).group(1)
或者之后去掉第一个字符:
2- domain = domain[1:]
不确定这是否是正确的方法(不要对 python 做太多)但它有效。
我需要从电子邮件中提取域,但我得到了@domain.com。我不需要域
开头的@
class ExtractDomain(webapp2.RequestHandler):
def get(self):
user = (str(users.get_current_user().email()))
domain = re.search("@[\w.]+", user)
thisdomain = domain.group()
template_values = {'user': user, 'thisdomain':thisdomain}
template = jinja2_env.get_template('templates/domain.html')
self.response.out.write(template.render(template_values))
你的正则表达式是 @[\w.]+
,它匹配 @words.com
,你所要做的就是对 @
做一些事情,所以它不在你的结果中。
解决方案 1:回顾
Lookbehinds 测试前面的字符是否匹配,同时不改变结果。 (?<=@)[\w.]+
解决方案 2:捕获组
你可以指定你想要的部分,在你的情况下 @([\w.]+)
在括号中,然后用 $1 调用它。但是,这需要对您的代码稍作修改。
对于第一个解决方案,您只需要更改正则表达式所在的行:domain = re.search("(?<=@)[\w.\-]+", user)
添加了 \-
以便处理一些多词域名,这对问题来说不是必需的。
使用捕获括号:
1- domain = re.search( "@([\w.]+)", user ).group(1)
或者之后去掉第一个字符:
2- domain = domain[1:]
不确定这是否是正确的方法(不要对 python 做太多)但它有效。