-2

我需要从电子邮件中提取域,但我得到了 @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))
4

2 回答 2

2

你的正则表达式是@[\w.]+,它匹配@words.com,你所要做的就是对它做一些事情,@所以它不在你的结果中。

解决方案 1:向后看

Lookbehinds 测试前面的字符是否匹配,而不改变结果。(?<=@)[\w.]+

解决方案 2:捕获组

您可以@([\w.]+)在括号中指定您想要的部分,然后用 $1 调用它。但是,这需要对您的代码稍作修改。

对于第一个解决方案,您只需更改正则表达式所在的行:已domain = re.search("(?<=@)[\w.\-]+", user)添加\-,因此处理了一些多字域名,而不是问题所必需的。

于 2015-07-10T06:13:56.027 回答
1

使用捕获括号:

1- domain = re.search( "@([\w.]+)", user ).group(1)

或者之后去掉第一个字符:

2- domain = domain[1:]

不确定这是否是一种正确的方法(不要对 python 做太多),但它确实有效。

于 2015-07-10T06:22:05.457 回答