我试图在如下所示的列表中找到术语 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
等类似字词答案 0 :(得分:2)
尝试更改为:
r'\w{4}\d{1}\.\d{3}\.\d{3}'
通常,您必须转义所有.
个字符,因为这在正则表达式中具有特殊含义。此外,当引用数字或单词字符时,您不仅仅使用字母,但必须让python知道您指的是特殊字符,因此\
此外,DRFT5有4个字母和1个1位数字,因此更改为\w{4}
值得一提的是,您不必创建另一个匹配DRFT5.147.002
的模式,这个正则表达式模式将完美匹配。