2014-09-19 76 views
2

嘗試查看其他人正在使用的正則表達式,但由於某種原因,它不適用於我。Ruby正則表達式提取電子郵件地址沒有檢測到HYRING

我只是基本上有一個字符串,如「[email protected]」,它只會提取[email protected]而不是整個事情。

這是我有:

regex = Regexp.new(/\b[a-zA-Z0-9._%+-,][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/) 
email = line.scan(regex) 

任何幫助將不勝感激。

+0

'+ - ,'匹配'+'到',' – 2014-09-19 18:00:39

+0

範圍內的所有字符,它們在ASCII碼中相互跟隨時只是'+'和','! – Vache 2014-09-19 18:00:44

回答

2

連字符需要轉義爲位於字符類內部的位置。

[a-zA-Z0-9._%+\-,]+ 
      ^

+-,)當前在範圍內的字符類的,之間+

內部連字符具有特殊含義相匹配的單個字符。您可以將連字符作爲課程的第一個或最後一個字符。在一些正則表達式實現中,你也可以直接放在範圍之後。如果你把連字符放在其他任何地方,你需要在它前面加一個反斜線,以便將它添加到你的類中。

+0

我試圖轉義它,但最終我得到另一個錯誤,試圖解析另一個電子郵件地址。 – LewlSauce 2014-09-19 18:10:23

+0

它不會被「regex = ...」行解析。這裏是錯誤:/root/scripts/test.rb:27:in'

'block(2 levels):char class中的空範圍:/\sAnn\s(.*?)\s["another.user- [email protected]「]/m(RegexpError) – LewlSauce 2014-09-19 18:13:43

+0

你的錯誤是'[」[email protected]「]'。你不能在'''''' – hwnd 2014-09-19 18:15:12

相關問題