在其他地方引用正则表达式代码的一部分

时间:2018-01-25 15:44:09

标签: php regex pcre

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

.replace(/ *\*[^)]*\* */g, "");

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

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

返回两场比赛 1000 11234 和 1324 1456

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

例如:

Speed 1000 11234
Weight 1324 1456

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

我也不想将正则表达式字符串保存到变量中,然后将其粘贴到preg_match_all('@(1[0-9]+) (\backRef1)@'... // This pseudocode is identical to @(1[0-9]+) (1[0-9]+)@ 内部,我想在正则表达式中直接引用它。

这可能吗?

由于

1 个答案:

答案 0 :(得分:1)

请参阅Regular Expression Subroutines

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

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

Regex101 Demo

用于命名捕获组的更新:

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

Regex101 Demo

还有define语法。