Python正则表达式 循环捕获所有书名
请教各位大佬,在Python下想捕获下面的所有书名:1023《带货》《古希腊》《威士忌原来是这么回事儿》《古希腊史》等
我是这么写的:\d+((《.+?》))+
返回的是:分组1:《古希腊史》
分组2:《古希腊史》
返回的都是最后一个
想要的是:分组1:《带货》
分组2:《古希腊》
分组3:《威士忌原来是这么回事儿》
分组4:《古希腊史》
初学,实在搞不清,先谢谢各位大佬了 要用数组提取打印啊 看源码调试 你想得太复杂了{:301_992:}
import re
ss = '1023《带货》《古希腊》《威士忌原来是这么回事儿》《古希腊史》等'
ptn = r'《.+?》'
r = re.findall(ptn,ss)
# r == ['《带货》', '《古希腊》', '《威士忌原来是这么回事儿》', '《古希腊史》']
现在很多正则工具,调试好了再上代码 rsnodame 发表于 2020-10-26 20:23
你想得太复杂了
import re
用捕获组是因为文档里面还有大批量其他带书名号的地方,而这个数字开头带书名号的这一行才是我需要的,谢谢你了:lol 积木工具箱 发表于 2020-10-26 20:35
现在很多正则工具,调试好了再上代码
在regex101调试的,这个网站可以把匹配到的捕获组也显示出来,问题就是调试不出来我想要的效果
import re
str = '1023《带货》《古希腊》《威士忌原来是这么回事儿》《古希腊史》等'
pattern = re.compile('《(.*?)》')
pattern.findall(str) Doublo 发表于 2020-10-27 12:47
用捕获组是因为文档里面还有大批量其他带书名号的地方,而这个数字开头带书名号的这一行才是我需要的,谢 ...
那你试试删掉一层()。你的pattern用了两层括号 rsnodame 发表于 2020-10-28 08:42
那你试试删掉一层()。你的pattern用了两层括号
删一层只能捕获最后一次匹配,多重循环捕获提示可以加一层括号实现,但是2次捕获都是最后一次,查了一下,别人说python实现补了
页:
[1]
2