Можно ли заменить каждую группу захвата в регулярном выражении другой строкой? - PullRequest
0 голосов
/ 15 февраля 2020

Если у меня есть такое регулярное выражение: (\.\d+)|([A-Z]\d{2}\.-)

Могу ли я заменить группу захвата $1 на строку a и группу захвата $2 на строку b в пределах одного регулярного выражения заменить?

preg_replace($pattern, $replace, $value);

.123A12.- до Value-aValue-b или .123funA12 до Value-afunValue-b

Ответы [ 2 ]

2 голосов
/ 15 февраля 2020

Вот как я это решил:

<?php
$patterns = array ('/\.\d+/','/[A-Z]\d{2}\.-/');
$replace = array ('Value-a','Value-b');
echo preg_replace($patterns, $replace, '.123funA12.-');
?>

См. здесь и здесь для получения информации.

0 голосов
/ 15 февраля 2020

Конечно, просто используйте $1, $2 и так далее:

preg_replace($pattern, "$1_something_else$2", $value);

Например, .123A12.- (что соответствует вашему выражению) будет затем заменено на

.123_something_elseA12.-
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...