Я пытался выполнять некоторые регулярные операции на 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