【发布时间】:2020-10-08 14:31:46
【问题描述】:
我正在尝试捕获一个由空格分隔的 6-12 位数字序列,如下所示(末尾的字母 D 只是一个示例。字符串末尾可能没有任何内容,或者有某种标点符号或字母)。
123 345 4567 89 D
123 345456789 D
我目前的尝试如下:
尝试 1:使用惰性量词 *?:
"\b(?:\d *?){6,12}\b"
这样,它将成功返回此字符串123 345456789 D 中的所有数字,但无法完全捕获123 345 4567 89 D 中的数字(仅捕获前两组)-我假设这是因为第一个由于惰性量词,两组数字(即123 345)满足6位数的最低要求,因此一旦满足最低要求,正则表达式就会停止。
尝试2:不使用惰性量词(仅使用*):
"\b(?:\d *){6,12}\b"
这样,上面示例中的所有数字组都被捕获。但是,这个正则表达式也会捕获最后一个数字和字母 D 之间的尾随空格。
所以我想知道是否有一种方法可以捕获所有数字而不包括尾随空格。我在 Python 中这样做,所以一个想法是使用第二个正则表达式但去掉任何尾随返回匹配后的空格,但看起来真的很不雅。
【问题讨论】: