2016-02-29 67 views
1

所以,我有行中的文字與大量不必要的信息(在谷歌表)。我想我使用這下面的正則表達式匹配除了EMAIL的一切:匹配一切除了電子郵件與此正則表達式

[a-zA-Z0-9_.+-][email protected](?:[a-zA-Z0-9-]+\.)+(?!png|jpg|gif)[a-zA-Z0-9-]+ 

如果我可以管理除電子郵件相匹配的一切,然後我就可以查找/替換,只留下電子郵件中這是我想要的行。在這裏遇到一些麻煩。幫助將不勝感激!

+0

正則表達式高度依賴於你正在使用的味道。您打算使用哪種應用程序/編程語言使用正則表達式?一些正則表達式不支持負向倒序等。 – Saleem

+0

我打算使用javascript,但現在只需使用「使用正則表達式搜索」框選中一個簡單的Google工作表查找/替換。如果您有其他想法 - 請告訴我 - 謝謝! – user2448617

回答

1

雖然它並不完美,這可能是你追求的:

對於在線演示這個作品:^(?:.*?(\w[^@\s]*@[^@\s]{2,}).*?|.+)$demo

不過,對於谷歌表,你需要刪除^$線的開始/結束標記,它應該做你最想要的東西。所以:

(?:.*?(\w[^@\s]*@[^@\s]{2,}).*?|.+)

以$ 1取代這種模式只留下一行

此作品每行的電子郵件地址,該模式在非捕獲組(?:由兩種模式。從行.*?開始的第一個模式看起來會延遲匹配所有字符,直到group1包含電子郵件模式(\w[^@\s]*@[^@\s]{2,}),然後是其他任何.*直到行尾。第二種模式將與沒有電子郵件的所有其他行匹配。這是搜索模式。替換模式簡單地是group1 $1。如果未找到電子郵件地址,Group1將爲空,因此每一行都將爲空白或填入電子郵件地址。

這可能不匹配全部電子郵件地址,但應該匹配最多。請參閱this question瞭解有關正則表達式匹配電子郵件地址的冗長閱讀。

+0

感謝您的支持,但根據我的原始要求,我正在尋找匹配除電子郵件地址以外的所有內容,以便我可以查找/替換它時只剩下剩餘的電子郵件。謝謝你的幫助! – user2448617

+0

你看過演示了嗎?這正是你所追求的。它所做的是找到一切,但將電子郵件標記爲一個組。在進行替換時,它會填滿組1中的每一行。因此只留下電子郵件地址。 – snoopen

+0

謝謝,關閉!但是,這是發生了什麼事情: [正則表達式的gif示例](http://goo.gl/ajBe6H) – user2448617

0

你不能匹配除電子郵件以外的所有內容。但是,您可以匹配所有內容電子郵件。

匹配任何非貪婪的郵件或字符串尾部。更改爲捕獲組,全局:

"BLAHBLAHemailBLAHBLAHemailBLAH".replace(/.*?(email|$)/g, "$1"); 
// => "emailemail" 

(插入自己的電子郵件正則表達式)

相關問題