我试图构建一个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/