我是正则表达式的新手,所以请容忍我。假设我有两个字符串:
string_1 = 'aAbcDeF801020J00100870'
string_2 = 'aAbF801020J00100870'
使用re模块,我可以匹配字符串的非数字第一部分
pattern = re.compile("^[aA-zZ]*")
print(pattern.match(string_1).group(0))
print(pattern.match(string_2).group(0))
>> aAbcDeF
>> aAbF
但是我怎样才能得到遵循匹配模式的6个数字字符的序列呢?即
801020
尝试以下操作:
pattern = re.compile("^[aA-zZ]*......")
print(pattern.match(string_1).group(0))
print(pattern.match(string_2).group(0))
给了我:
>> aAbcDeF801020
>> aAbF801020
离得更近,但还差得远我更喜欢在一个单一的模式查找与。在我最后一次尝试的最后一次尝试中,
Thanks in advance
2条答案
按热度按时间wgx48brx1#
您可以尝试:
就像这样:
给你输出:
其中
group(1)
包含要匹配的文本,group(2)
包含6位数字。如果您愿意,可以使用
group(0)
获取文本以及6位数字Here's a fully functioning demo at regex101.com
正如您在页面上提供的匹配信息中所看到的,找到的完全匹配是字母沿着的6位数字。
注意-另外,如果你想找到这个模式的所有次,你可以像这样使用
re.findall()
:这将导致一个元组数组,如下所示:
eyh26e7m2#
可以使用
^([a-zA-Z])*([0-9]+)
:输出量: