繁体   English   中英

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

[英]Extract substr starting with TICKET# from string

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

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

我想提取部分TICKET#ABC123

如何在Python中做到最好? 这是我的目标之路,还是您有更好的建议来跟踪邮件链?

没有正则表达式(使用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

: 您可以使用以下

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

使用正则表达式。

例如:

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

无法评论@Rakesh。

但是我们需要稍微修改一下正则表达式,因为预期结果是TICKET#ABC123

例如

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM