我试图构建一个regexp来处理以字符串形式呈现给我的数据类型,
有两种可能的格式:
字符串[nmin..nmax]
字符串[nmax]
其中nmin和nmax是一些数字。
我构建了对我有效的regexp,但我想找到更好的方法

\[(\d+)(\.{2})?(\d+)?\]

我不喜欢的是:
我把点分成不同的组,但我不需要它们作为一个组。
nmax始终存在,但取决于模式,它将位于组1或组3中。我有办法把它放在同一组吗?

最佳答案

如果您希望nmax始终处于您可以使用的同一组中

\[(?:(\d+)\.{2})?(\d+)]

(?:...)是一个非捕获组,我们使用它使nmin..匹配构造成为可选。
但即使是可选的,捕获组索引也会递增:(\d+)\.{2}将始终位于组2中,nmax(如果存在)将始终位于组1中。见demo here

关于python - 带有正确分组的[nn.nn] n [nn]的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23806951/

10-13 00:05