gpt4 book ai didi

python - numpy 的一维高级​​索引语法的正则表达式 - 如何处理可选的尾随逗号

转载 作者:行者123 更新时间:2023-11-28 21:31:25 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式来匹配一维数组的 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]]),这是不可取的。

我本质上想要的是在内部方括号中有一个整数列表,用逗号分隔并允许尾随逗号。此外,这些数字允许有 -+ 前缀。

有人可以为我提供验证上述模式的解决方案吗?

谢谢。

最佳答案

必须以精确的方式将可选的与必需的混合在一起。

^[_a-zA-Z]\w*\s*\[\s*\[(?:\s*(?:[-+]\s*)?[1-9] [0-9]*(?:\s*,\s*(?:[-+]\s*)?[1-9][0-9]*)*(?:\s*,)?\s*)?\]\s*\]$

https://regex101.com/r/D3wzYb/1

展开

 ^    
[_a-zA-Z]
\w* \s* \[ \s* \[
(?:
\s*
(?: [-+] \s* )?
[1-9] [0-9]*
(?:
\s* , \s*
(?: [-+] \s* )?
[1-9] [0-9]*
)*
(?: \s* , )?
\s*
)?
\] \s* \]
$

关于python - numpy 的一维高级​​索引语法的正则表达式 - 如何处理可选的尾随逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com