Regex 用正则表达式捕获无限数量的数字?

Regex 用正则表达式捕获无限数量的数字?,regex,pattern-matching,infinite-sequence,Regex,Pattern Matching,Infinite Sequence,我想在可能包含无限数量数字的字符串上使用正则表达式获取捕获。我的直觉引导我去做“/\.getnumbers(\d+++\s*/”,但这只匹配.getnumbers命令后面的第一个数字。如何编写一个regex语句,该语句将在用简单空格分隔的命令后捕获一个或多个数字。例如:.getnumbers 5 4 3 2 1将匹配(5)(4)(3)(2)(1),尽管正则表达式不是专门为匹配5个数字而编写的,但它可以匹配任意数量的数字。如果不进行后处理,您可能无法做到这一点,因为大多数正则表达式引擎不允许无限数

我想在可能包含无限数量数字的字符串上使用正则表达式获取捕获。我的直觉引导我去做
“/\.getnumbers(\d+++\s*/”
,但这只匹配
.getnumbers
命令后面的第一个数字。如何编写一个regex语句,该语句将在用简单空格分隔的命令后捕获一个或多个数字。例如:
.getnumbers 5 4 3 2 1
将匹配
(5)(4)(3)(2)(1)
,尽管正则表达式不是专门为匹配5个数字而编写的,但它可以匹配任意数量的数字。

如果不进行后处理,您可能无法做到这一点,因为大多数正则表达式引擎不允许无限数量的组。幸运的是,后处理只包括按空格分割

/\.getnumbers (\d+(?: \d+)*)/

如果不进行后处理,您可能无法做到这一点,因为大多数正则表达式引擎不允许无限数量的组。幸运的是,后处理只包括按空格分割

/\.getnumbers (\d+(?: \d+)*)/
请注意,您将作为单个捕获组获取所有数字。例如:“54321”


请注意,您将作为单个捕获组获取所有数字。例如:“5 4 3 2 1”

我同意尝试为每个组创建单独的组没有多大意义,但我不知道“大多数正则表达式引擎不允许无限数量的组。”我知道Perl和PCRE都受到可用虚拟内存的限制。什么常用语言比这更具限制性?(谢谢。)@tchrist:它们允许你拥有任意数量的群组。但是每组你还需要一双
()
。啊,我明白了。人们总是希望
/(?:\b(\d+)\b\s*)+/
填充的不仅仅是该模式所占的
$1
。当它们匹配
“12345523”=~/(?:\b(?\d+)\b\s*)+/
时,问题又出现了,现在发现
@{$-{N}}
包含了所有匹配项的列表。我同意尝试为每个匹配项创建单独的组没有多大意义,但我不知道“大多数正则表达式引擎不允许无限数量的组。”我知道Perl和PCRE都受到可用虚拟内存的限制。什么常用语言比这更具限制性?(谢谢。)@tchrist:它们允许你拥有任意数量的群组。但是每组你还需要一双
()
。啊,我明白了。人们总是希望
/(?:\b(\d+)\b\s*)+/
填充的不仅仅是该模式所占的
$1
。当它们匹配
“12345 523”=~/(?:\b(?\d+)\b\s*)+/
时,问题返回,现在发现
@{$-{N}}
包含所有匹配项的列表。