我正在尝试从电子邮件回复主题消息中提取票证编号。主题消息通常如下所示:
s = 'Re: Test something before TICKET#ABC123 hello world something after'
我想提取TICKET#ABC123
部分
如何用Python做到最好?这是我的目标之路吗?还是您有更好的建议来跟踪邮件链?
答案 0 :(得分:3)
没有正则表达式(使用split()
和startswith()
):
s = 'Re: Test something before TICKET#ABC123 hello world something after'
splitted = s.split()
for x in splitted:
if x.startswith('TICKET#'):
print(x)
# TICKET#ABC123
答案 1 :(得分:2)
您可以使用以下 regex :
import re
s = 'Re: Test something before TICKET#ABC123 hello world something after'
re.findall(r'TICKET#[a-zA-Z0-9]+(?=\s)', s)
# ['TICKET#ABC123']
说明:
r'TICKET#
-从字面上匹配字符r'TICKET#(区分大小写)
[a-zA-Z0-9]
-匹配[a-zA-Z0-9]中出现的单个字符
+
-量词在一次和无限次之间进行匹配,并尽可能地多次匹配,并根据需要进行回馈(贪婪)
(?=\s)
-正向超前(?= \ s)
\s
-匹配任何空格字符(等于[\ r \ n \ t \ f \ v])
答案 2 :(得分:1)
使用正则表达式。
例如:
import re
s = 'Re: Test something before TICKET#ABC123 hello world something after'
m = re.search(r"TICKET#(\w+)", s)
if m:
print(m.group(1))
输出:
ABC123
答案 3 :(得分:1)
无法评论@Rakesh。
但是我们需要稍微修改一下正则表达式,因为预期结果是TICKET#ABC123
Ex :
import re
s = 'Re: Test something before TICKET#ABC123 hello world something after'
m = re.search(r"(TICKET#(\w+))", s)
if m:
print(m.group(1))
输出:
TICKET#ABC123
如果您想获取机票号码,则可以使用
m.group(2)