Python正则表达式忽略字符串中的第一个字符

2024-04-26 05:41:28 发布

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

我有一个python正则表达式,在这里我看到它忽略了匹配字符串中的第一个字符。当我使用pythex.org尝试相同的正则表达式时,我可以看到它按预期工作。有人能帮我解释为什么我会这样;我看到这个问题了吗

import re
def expandTrafficItemList(a):
    skip_list = []
    pat = re.compile(r'([A-Za-z]+)(\d+)-[A-Za-z]+(\d+)')
    if a:
        c = a.split(',')
        print(c)
        for items in c:
            print(items)      # here it is not matching the string TRF instead it takes only RF
            b = pat.search(items, re.I)
            print(b.group(0))
        
a = "'TRF1-TRF25','RAW1-RAW4'"
expandTrafficItemList(a)

输出:

["'TRF1-TRF25'", "'RAW1-RAW4'"]
'TRF1-TRF25'
RF1-TRF25
'RAW1-RAW4'
AW1-RAW4

1条回答
网友
1楼 · 发布于 2024-04-26 05:41:28

你把旗子放错地方了。当您将re.I放在search方法中时,实际上无意中更改了search的起始位置。有关这方面的更多信息,请参阅re文档。re.I标志实际上位于compile方法中。此外,在使用[A-Za-z]时,您似乎并不需要它,因为它包含大小写值,但如果将来需要更多标志,请将它放在compile

您的固定代码:


import re
def expandTrafficItemList(a):
    skip_list = []
    pat = re.compile(r'([A-Za-z]+)(\d+)-[A-Za-z]+(\d+)', flags=re.I)
    if a:
        c = a.split(',')
        print(c)
        for items in c:
            print(items)
            b = pat.search(items)
            print(b.group(0))

a = "'TRF1-TRF25','RAW1-RAW4'"
expandTrafficItemList(a)

输出:

["'TRF1-TRF25'", "'RAW1-RAW4'"]
'TRF1-TRF25'
TRF1-TRF25
'RAW1-RAW4'
RAW1-RAW4

相关问题 更多 >