在别处引用了一部分正则表达式代码

Referencing a part of regular expression code elsewhere

我有一个像这样的正则表达式

preg_match_all('@(1[0-9]+) (1[0-9]+)@'...

如果在以下字符串中释放:

Speed 1000 11234
Weight 1324 1456

它returns两场比赛 1000 11234 和 1324 1456

有没有办法在正则表达式后面的第一个括号中反向引用正则表达式代码?

例如:

preg_match_all('@(1[0-9]+) (\backRef1)@'... // This pseudocode is identical to @(1[0-9]+) (1[0-9]+)@

我不是在寻找匹配参考 \1,因为它只适用于像 123 123

这样的镜像匹配

我也不想将正则表达式字符串保存到一个变量中,然后将其粘贴到里面 "@($pattern) ($pattern)@" 我想直接在正则表达式本身中引用它。

这可能吗?

谢谢

参见 Regular Expression Subroutines

您可以通过 \g<1>(?1)

来引用第一组
(1[0-9]+) (?1)

Regex101 Demo

用于命名捕获组的更新:

(?<test>1[0-9]+) \g'test'

Regex101 Demo

还有 define 语法可用。