正则表达式查找连续字母

时间:2020-03-27 21:47:19

标签: python regex

如何在字符串“ 21043213213”中找到连续的字符串“ 210”。该字符串将始终以“ 210”开头。

我遇到的问题是,如果“ 210”位于字符串的中间,它将仍然打印该字符串。在下面的示例中,由于在字符串中找到了210,因此将“ K”更改为“ L”。我怎样才能告诉正则表达式在开始时只找到“ 210”。

示例:

输入:

1fzzvk   K 21000345678
1fzzvk   K 34210887632

预期输出:

1fzzvk K 21000345678
1fzzvk L 34210887632

代码:

with open(file, 'r') as file:
    with open(dir+'wupannew.txt', 'w') as fout:
        for f in file:
            if re.search('210', f):
                rflag = re.sub('L', 'K', f)
                fout.write(rflag)
                print(f)
            if not re.search('210', f):
                rflag = re.sub('K', 'L', f)
                fout.write(rflag)

1 个答案:

答案 0 :(得分:1)

您可以使用:

import re

s = "21043213213"

r = re.search('210', s)
if r:
    print(r.group())

修改后:

import re

s1 = '1fzzvk   K 21000345678'
s2 = '1fzzvk   K 34210887632'


print(re.sub(r'K 210', 'L 210', s1))
print(re.sub(r'K 210', 'L 210', s2))

输出:

1fzzvk   L 21000345678
1fzzvk   K 34210887632