Regex $ 1, $ 2 и т. Д.

Я пытался выполнять некоторые регулярные операции на PHP, и я не очень квалифицирован в этой области. Кажется, что когда я использую функцию регулярного выражения, такую ​​как preg_replace для строки, я могу получить доступ к строкам, замененным регулярным выражением, с помощью переменных типа $ 1, $ 2 и т. Д. Что это называется и как я могу его использовать?

Они известны в терминологии regex как обратные ссылки (подробнее об этом здесь ). Вы используете их для ссылки на группы захвата (или подшаблоны, окруженные () ) внутри вашего регулярного выражения или в заменяющей строке.

Пример:

 /* * Replaces abcd123 with 123abcd, or asdf789 with 789asdf. * * The $1 here refers to the capture group ([az]+), * and the $2 refers to the capture group ([0-9]+). */ preg_replace('/([az]+)([0-9]+)/', '$2$1', $str); 

Они называются backreferences и сопоставляют сгруппированные элементы в regexp.

Если вы окружаете раздел регулярного выражения с помощью скобок, то вы можете ссылаться на него в секции замены (или даже позже в том же регулярном выражении по обратной ссылке, которая соответствует его положению).

Форма смены или форма доллара могут использоваться в замене:

 \1, \2 == $1, $2