Python re匹配

Python025

Python re匹配,第1张

按照你的要求编写匹配英文字典的Python3程序如下

import re

s = '400 buy 买 DIRECTION& PREPOSITION 方向介词 490 something 某物\n446 beside 在…… 旁边 401 arrive 到达\n491 every 每个\n402 come 来 447 above 在…… 上面\nANIMALS 动物\n403 hurt 伤刺痛 448 below 在…… 下面\n492 chicken 鸡 '

regex = r'([0-9]+\s+[A-Za-z_\-]+\s+(在…… [\u4e00-\u9fa5]+|\S+))'

result = re.findall(regex,s)

for i in result:

 print(i[0])

源代码(注意源代码的缩进)

python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()中的匹配。要想达到原来的匹配效果,就是把4匹配出来,有两种解决方法:

1.最外层加个大括号,变成:m = re.findall('(([0-9])*4([0-9])*)', '[4]'),返回结果的第一个元素就是匹配结果了。

2.去除()的匹配结果返回,在括号前面加入?:,变成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回结果就是要匹配的结果了。