【发布时间】:2019-09-29 01:21:08
【问题描述】:
我正在尝试创建一个正则表达式来匹配一维数组的 Python numpy 高级索引语法的子集。
到目前为止,我有这个:
^[_a-zA-Z]\w*\s*\[\s*\[(\s*[-+]?\s*[1-9][0-9]*\s*,\s*)*\]\s*\]$
此正则表达式可以成功匹配以下内容:
a[[10,]]
a[[+10,-10,20,]]
a [ [ + 10 , - 10 , 20 , ] ]
a[[]]
但是,Python 列表中的尾随逗号是可选的,不是必需的。不幸的是,我的正则表达式无法验证以下内容:
a[[10]]
a[[10,10]]
请注意内括号末尾缺少的逗号。如果我在我的正则表达式模式的, 旁边添加一个?,则上述模式得到验证。但是,正则表达式还会验证不希望的数字表达式项目(例如:a[[10+10,10]])。
我本质上想要的是有一个整数列表,在内方括号中,用逗号分隔并允许尾随逗号。此外,这些号码可以有- 或+ 前缀。
有人可以为我提供验证上述模式的解决方案吗?
谢谢。
【问题讨论】: