列表中的正则表达式失败

时间:2013-06-25 15:29:31

标签: python regex python-2.7

我试图在如下所示的列表中找到术语 DRFT5.147.001 。但是我的正则表达式没有返回任何结果,这看起来很奇怪。

列表:     单词:

> ['DRFT5.147.001', '0000000000000000', '0139', '10.00',
> '700000031479999', '05/27/13', '(002)', '<MAN.', 'CORR', 'BY', 'LG0',
> 'DRFT5.147.001', '00000000', '0139', '25.00', '70000003147999999',
> '05/27/13', '(002)', '<MAN.', 'CORR', 'BY']

代码

ii = [i for i,item in enumerate(words) if re.match(r'w{3}d{1}\.d{3}\.d{3}',item)]

此代码适用于 DRFT5.147.001 等字词,最好也适用于 DRFT5.147.002

等类似字词

1 个答案:

答案 0 :(得分:2)

尝试更改为:

r'\w{4}\d{1}\.\d{3}\.\d{3}'

通常,您必须转义所有.个字符,因为这在正则表达式中具有特殊含义。此外,当引用数字或单词字符时,您不仅仅使用字母,但必须让python知道您指的是特殊字符,因此\

此外,DRFT5有4个字母和1个1位数字,因此更改为\w{4}

值得一提的是,您不必创建另一个匹配DRFT5.147.002的模式,这个正则表达式模式将完美匹配。