node.js - 删除除用户写入的文本之外的所有内容

标签 node.js regex outlook-restapi

我使用 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.

最佳答案

UPDATE: added 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);

关于node.js - 删除除用户写入的文本之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203645/

相关文章:

javascript - 使用正则表达式将 URL 中的与号 (&) 和空格转换为破折号 (-)

Python:从正则表达式中排除空格

apache - 配置Apache2.4为 "secure scheme"

javascript - 在 Node API 中接收完整日期时间而不是仅接收日期

javascript - 浏览器中 Node 的 net.connect()?

node.js - pug 中的 nodejs : Koa , 形式给出未定义

node.js - 如何通过管道传输到作为缓冲区而不是文件的 Node.js 流?

java - 用正则表达式替换字符串

json - Office 365 API 为全天事件返回不正确的开始和结束日期时间

oauth-2.0 - OAuth 授权流程 - token 过期