Подтвердить что ты не робот

Regex $1, $2 и т.д.

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

4b9b3361

Ответ 1

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

Пример:

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

Ответ 2

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

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

В заменах может использоваться форма слэш или форма доллара:

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