所以,我有大量的文字,其中包含大量不必要的信息(在谷歌表中)。我想匹配除了EMAIL以外的所有内容,我使用以下正则表达式:
[a-zA-Z0-9_.+-]+@(?:[a-zA-Z0-9-]+\.)+(?!png|jpg|gif)[a-zA-Z0-9-]+
如果我能设法匹配除电子邮件之外的所有内容,那么我只能查找/替换并只留下我想要的行中的电子邮件。在这里遇到一些麻烦。帮助将不胜感激!
答案 0 :(得分:1)
虽然它并不完美,但这可能是你所追求的:
对于在线演示,这有效:^(?:.*?(\w[^@\s]*@[^@\s]{2,}).*?|.+)$
demo
但是对于Google表格,您需要删除^
和$
行开始/结束标记,它应该完成您想要的大部分操作。所以:
(?:.*?(\w[^@\s]*@[^@\s]{2,}).*?|.+)
用$ 1替换此模式,只留下每行的电子邮件地址
每行都有效,该模式由非捕获组(?:
中的两个模式组成。第一个模式从行.*?
的开头看起来懒洋洋地匹配所有字符,直到包含电子邮件模式(\w[^@\s]*@[^@\s]{2,})
的group1后跟任何其他.*
直到行尾。第二个模式将匹配所有其他行没有电子邮件。这是搜索模式。替换模式只是group1 $1
。如果没有找到电子邮件地址,Group1将为空,因此每行将为空白或填充电子邮件地址。
这可能与所有电子邮件地址不匹配,但应匹配最多。有关正则表达式匹配电子邮件地址的详细阅读,请参阅this question。
答案 1 :(得分:0)
除了电子邮件,你无法匹配所有内容。但是你可以匹配所有和电子邮件。
匹配任何非贪婪的内容,然后是捕获的电子邮件或字符串结尾。全局更改为捕获组:
"BLAHBLAHemailBLAHBLAHemailBLAH".replace(/.*?(email|$)/g, "$1");
// => "emailemail"
(插入您自己的电子邮件regexp。)