我有一个很大的字符串(来自阅读电子邮件)。现在,当用户回复时,典型的回复如下所示:
"On x x x wrote:"
我想删除此模式之后的所有文本。但是,我不确定如何识别此模式。
我知道如何在特定字词或字符后去除所有内容:
abc = abc.split('From:', 1)[0]
但是如果在模式On
和wrote:
之间插入文本,您会怎么做?
示例:
\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n
答案 0 :(得分:3)
正则表达式将对此进行排序:
re.match(r"\r\nOn.+wrote:", email)[0]
^
表示字符串的开头
On
是单词“开”
.+
是任何事物的一个或多个实例
wrote:
是“写”一词
最后的[0]
将从电子邮件中获得第一个匹配项
email.strip()
删除空格
示例:
import re
email = '\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n'
extracted = re.match(r"On.+wrote:", email.replace('\r', '').replace('\n', ''))[0]
print(extracted)
Out[163]: 'On Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:'
正则表达式的另一种选择是找到单词“ On”第一次出现的索引和单词“ wrote”的索引,然后将整个文本分为两个子集:
extracted = email[email.find('On'):email[email.find('On'):].find('wrote:')+8]
答案 1 :(得分:1)
abc.split(“ on。* wrote:”)[1]
https://regexr.com 这是学习正则表达式的好网站!
答案 2 :(得分:0)
您可以使用正则表达式,然后在完全匹配时将其分割。 您可以使用/ On / regex / From:/,其中regex是检测“ x x x”的正则表达式。
更多信息可以在文档中找到:enter link description here
答案 3 :(得分:0)
您可以使用以下正则表达式找到您的模式:
/(?:On\ x\ x\ x\ wrote\:)/