我正在尝试使用Python中的RegEx解析元素数量未知的字符串.这是示例:
>>>> import re
>>>> re.match("\=( A([0-9]+))*", "= A1 A2 A3 A4").groups()[1::2]
('4',)
我希望有:
('1', '2', '3', '4',)
如何获得预期的结果?
编辑:
re.findall对我不起作用.让我举一个更好的例子:
我要匹配以下字符串:
_func(cmd, param1, param2, param3, param4)_
我事先不知道参数的数量.我希望使用以下代码解决它:
>>> re.match("(\w+)\(cmd(, (\w+))*\)", "func(cmd, param1, param2, param3, param4)")
但这是行不通的,因为组()*不会扩展为很多项目,而只能使用last.有任何想法吗?
解决方法:
pat = re.compile(r' A(\d+)')
lst = re.findall(pat, "= A1 A2 A3 A4")
这将返回一个列表,在您的示例中,您显示了一个元组.我认为列表对您有用,但是您当然可以始终这样做:
t = tuple(lst)
我刚刚给出的答案实际上并没有检查输入字符串中的=

在Python中,使用正则表达式解析未知数量的字符串元素。例如,匹配等于号后的一系列数字(如=A1 A2 A3 A4),期望结果是 ('1', '2', '3', '4')。示例代码使用`re.findall`或通过编译模式以处理多个匹配项。同时,提供了解决函数调用参数匹配的方法。"
120552333,9036138,C++后台开发:深入理解网络IO模型与Reactor模式,"['C++后台开发', '网络IO模型', 'Reactor模式', 'Linux服务器开发', 'IO模型']
最低0.47元/天 解锁文章


被折叠的 条评论
为什么被折叠?



