【发布时间】:2017-11-22 17:15:19
【问题描述】:
标题很差 - 如果您觉得可以提供帮助,请随时更新它
我正在尝试返回一个列表
[<str1>, <str2>,...,<strX>]
在以下字符串中:
'%%<str1>%%_Anything_Can_Be_Here_%%<str2>%%'
以下代码有效,但如果行中“%%”的数量大于 2,则它将获取第一组和最后一组“%%”之间的所有内容。
>>> import re
>>> str = '%%nas_ip_address%%'
>>> re.match('%%(.*)%%', str, re.DOTALL).group(1)
'nas_ip_address'
>>> str = '%%nas_ip_address%%:/vx/%%sfs_storage_pool%%'
>>> re.match('%%(.*)%%', str, re.DOTALL).group(1)
'nas_ip_address%%:/vx/%%sfs_storage_pool'
>>> re.match('%%(.*)%%', str, re.DOTALL).groups()
('nas_ip_address%%:/vx/%%sfs_storage_pool',)
有没有办法使用正则表达式从字符串中提取['nas_ip_address', 'sfs_storage_pool']?我希望解析一个非常大的文件,但是性能不是问题,因为它不适用于生产
【问题讨论】:
-
(%{2,})(.*?)\1?捕获组 2
标签: python regex python-3.x