按照你的要求编写匹配英文字典的Python3程序如下
import res = '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]'),返回结果就是要匹配的结果了。