2015-07-10 60 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

相關問題