我试图删除所有句子,如果他们开始与特定字符,直到断行。到目前为止,我创建了类似这样的东西,但它只删除了这些特定的字符,而不是整行。我不擅长正则表达式,所以如果有人能给我一些提示我会很感激
: ABC DEF & lt; abc.l@def.com [mailto: abc.l@def.com]在
即将到来的事件:
你好你好
发送日期:2015年2月28日,星期四,17:22 PM
var cleanup = msg.replace(/From.|Sent.|To.|Cc.*n/g, "");
当前输出:
ABC DEF & lt; abc.l@def.com [mailto: abc.l@def.com]在
即将离开办公室:
你好你好
2021年7月29日星期四下午7:48
预期输出:即将离开办公室:
你好你好
可以使用
text = text.replace(/^s*(?:From|Sent|To|Cc)b.*[rn]*s*/gm)
或者,如果您还需要删除空行:
text = text.replace(/^(?:s*(?:From|Sent|To|Cc)b.*)?[rn]*s*/gm)
参见regex demo #1和regex demo #2。细节:
^
-行起始(m
标志允许)s*
-零或多个空白(?:From|Sent|To|Cc)
-任何替代b
- a字边界.*
-剩下的行[rn]*
- 0个或多个CR或/和LF字符s*
-零或多个空白。
在第二个正则表达式中,s*(?:From|Sent|To|Cc)b.*
部分是可选的,因此在一行开始之后的任何lib断行都可以被使用。
JavaScript演示:
const text = "From: ABC, DEF <abc.l@def.com [mailto:abc.l@def.com]>nnUpcoming Events:nnHello hellonnSent: Thursday, February 28, 20117:22 PM";
const rx = /^(?:s*(?:From|Sent|To|Cc)b.*)?[rn]*s*/gm;
console.log(text.replace(rx, ""));