2015-07-10 33 views
-2

我需要从电子邮件中提取域名,但我得到@ domain.com。我不需要的@在域开始我需要从电子邮件中提取域名,但我得到@ 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)) 

回答

2

你的正则表达式是@[\w.]+,它匹配@words.com,所有你需要做的就是做的东西@,所以它不是在你的结果。

解决方法1:如果前面的字符匹配,回顾后

Lookbehinds测试同时不改变结果。 (?<[email protected])[\w.]+

解决方案2:捕获组

您可以指定你想要的部分,在你的括号情况下@([\w.]+),然后$ 1调用它。但是,这需要对代码进行轻微的修改。

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

+0

帮我修改代码 – Phares

+0

@TJ没有太多东西需要更改,更新了我的答案 –

+0

谢谢安德里斯它完美的工作 – Phares

1

使用捕获括号:

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

或之后剥离的第一个字符关:

2- domain = domain[1:] 

不知道这是做(没有做很多与Python),但取之有道有用。

+0

它的工作太谢谢了恐怖 – Phares

相关问题