从字符串中提取以TICKET#开头的substr

2024-07-07 07:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从电子邮件回复主题消息中提取票号。主题消息通常如下所示:

s = 'Re: Test something before TICKET#ABC123 hello world something after'

我想提取部分TICKET#ABC123

如何在Python中实现这一点?这是我要走的路还是你有更好的建议来跟踪邮件链?你知道吗


Tags: testre消息hello主题world电子邮件邮件
3条回答

使用正则表达式。你知道吗

例如:

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

您可以使用以下正则表达式:

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])

没有regex(使用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

相关问题 更多 >