删除用户写下的所有文字

问题描述:

我用Outlook API取出发送的电子邮件正文。现在,我想清理所有的链接,标题等,并只保留用户编写的文本。以下是我的正则表达式功能:删除用户写下的所有文字

function getRegex() { 

    var regex1 = /^(?=.*Forwarded message)[^]*/m; 
    var regex2 = /^(?=.*From:)[^]*/m; 
    var regex3 = /^(?=.*On)[^]*/m; 
    var regex4 = /^(?=.*http)[^]*/m; 

    return new RegExp("(" + regex1.source + ")|(" + regex2.source + ")|(" + regex3.source + ")|(" + regex4.source + ")"); 
} 

以下是功能从Outlook获取发送的电子邮件:

outlook.mail.getMessages({ 
    token: token.token.access_token, 
    odataParams: queryParams, 
    folderId: 'SentItems' 

}, function (err, result) { 

    if (err){ 
     console.log(err); 
     return; 
    } 

    var mail_array = result.value; 
    var outlook_sent_emails = ''; 

    mail_array.forEach(function (mail) { 

     if (mail.BodyPreview !== '') { 
      outlook_sent_emails += (mail.BodyPreview + " "); 
     } 
    }); 

    console.log(outlook_sent_emails.replace(getRegex(), "")); //This is not working 
}); 

此行console.log(outlook_sent_emails.replace(getRegex(), ""));表明我仍然得到所有的链接,标题等

的同样的正则表达式在我的代码中的其他地方工作。

编辑:

示例文字:

From: <Name> 
    Sent: <Datetime> 
    To: <Name> 
    Subj Dear Sir/Madam 


Hi Vaibhav, 

Hope you are doing well. 

http://developer.android.com/sdk/index.html 

Sent from my Windows 10 phone 

我想删除所有类型的链接和文字一样从字符串如下:

From: <Name> 
Sent: <Datetime> 
To: <Name> 
Subj Dear Sir/Madam 

预期的输出:

Hi Vaibhav, 

Hope you are doing well. 
+0

如果你想检查整个*文本中是否有'http',你需要在lookahead中使用'[^] *',和消费模式部分一样。尝试用'[^] *'替换所有'。*'。 –

+0

@WiktorStribiżew这样做会清除所有文本,并且我得到空白结果。 –

+0

是的,因为现在你的正则表达式匹配:)并且按照预期工作,因为'[^] *'是贪婪的并且可以匹配任何*字符。考虑你的要求并发布它们。现在,由于我们不知道内容是什么样,所以不可能帮助你。 –

更新:加入HTTP

你可以试试这个:

^.*(From:|Sent:|Sent\s+From|To:|Subj|Dear\s+(Sir|Madam)|http).*$ 

,并通过 “”

Demo

const regex = /^.*(From:|Sent:|Sent\s+From|To:|Subj|Dear\s+(Sir|Madam)|http).*$/gmi; 
 
const str = ` From: <Name> 
 
    Sent: <Datetime> 
 
    To: <Name> 
 
    Subj Dear Sir/Madam 
 

 

 
Hi Vaibhav, 
 

 
Hope you are doing well. 
 

 
http://developer.android.com/sdk/index.html 
 

 
Sent from my Windows 10 phone`; 
 
const subst = ``; 
 
const result = str.replace(regex, subst).trim(); 
 
console.log(result);
012取代

+0

更新为每最新的示例I/O –

+0

嘿,这的确工作。谢谢@Rizwan M. Tuman –

+0

@Vaibhav Agarwal,很高兴知道它为你工作..我想你知道,你想要取代什么,也知道目标邮件为你想申请:) –