2024-09-28 05:18:02 发布
网友
我的程序接受一个正则表达式来描述一组设备。例如
--device=dev{01,02}{nyc}.hukka.com
应该扩展到dev01纽约hukka.com和dev02纽约hukka.com在
我如何使用Python中的re模块来扩展用户提供的regex以完成可以使用的字符串?我使用的是python2.4。在
re
如果我们在大括号上re.split,我们得到:
In [7]: re.split(r'\{(.*?)\}',userstring) Out[7]: [' device=dev', '01,02', '', 'nyc', '.hukka.com']
列表中的所有其他项目都来自内部大括号,我们接下来需要用逗号分隔:
现在我们可以使用itertools.product来列举各种可能性:
import re import itertools userstring = ' device=dev{01,02}{nyc}.hukka.com' for x in itertools.product(*[ part.split(',') if i%2 else [part] for i,part in enumerate(re.split(r'\{(.*?)\}',userstring)) ]): print(''.join(x))
收益率
device=dev01nyc.hukka.com device=dev02nyc.hukka.com
只需将第一个大括号提取到一个组并在该组上迭代:
import re user_arg = "dev{01,02}{nyc}.hukka.com" regex = re.compile('dev{(?P<dev_id>[^}]*)}{(nyc)}.hukka.com') result = regex.search(user_arg) devices = [] for dev_id in result.group(1).split(',') : devices.append("dev%s%s.hukka.com" % (dev_id, result.group(2))) print devices
返回:
如果我们在大括号上re.split,我们得到:
列表中的所有其他项目都来自内部大括号,我们接下来需要用逗号分隔:
^{pr2}$现在我们可以使用itertools.product来列举各种可能性:
收益率
只需将第一个大括号提取到一个组并在该组上迭代:
返回:
^{pr2}$相关问题 更多 >
编程相关推荐