2024-04-26 23:55:08 发布
网友
一个字符串包含被“-”或“\”分开的数字,我怎样才能得到字符串中的每一个数字?你知道吗
import re pattern = re.compile(r'\w(\d+)(?:(?:-|_)(\d+))*\w') str='a1-2-3_4bc2-3_4d' m = re.findall(pattern, str) print(m)
我期望输出是[(1,2,3,4),(2,3,4)],但是它给出了[('1','4'),('2','4')]
编辑:这个答案是基于发布的内容。你知道吗
你就快成功了,试试(\d+)(?:(?:-|_)(\d+))*?
(\d+)(?:(?:-|_)(\d+))*?
*? # (zero or more)(lazy)
您已经在使用findall,因此可以将regex简化为:
(\d+)(?:-|_)?
在您的完整示例中,您将得到
import re pattern = re.compile(r'(\d+)(?:-|_)?') str='1-2-3_4' m = re.findall(pattern, str) print(m)
这是回报
['1', '2', '3', '4']
现在,如果你要把字母放在混合词中,你不妨用超级简单的方法提取所有的数字:
import re pattern = re.compile(r'(\d+)') str='1-2-3_4b5' m = re.findall(pattern, str) print(m)
那会给你
['1', '2', '3', '4', '5']
但很明显,这是一个不同的匹配,而不是考虑到
这不太可能在一个步骤中完成,这需要同时捕获可变数量的组;您可以尝试以下方法:
import re s='a1-2-3_4bc2-3_4d' [re.findall(r'\d+', g.group()) for g in re.finditer(r'[\d_-]+', s)] # [['1', '2', '3', '4'], ['2', '3', '4']]
编辑:这个答案是基于发布的内容。你知道吗
你就快成功了,试试
(\d+)(?:(?:-|_)(\d+))*?
您已经在使用findall,因此可以将regex简化为:
在您的完整示例中,您将得到
这是回报
现在,如果你要把字母放在混合词中,你不妨用超级简单的方法提取所有的数字:
那会给你
但很明显,这是一个不同的匹配,而不是考虑到
这不太可能在一个步骤中完成,这需要同时捕获可变数量的组;您可以尝试以下方法:
相关问题 更多 >
编程相关推荐