Regex $ 1, $ 2 и т. Д. - PullRequest
       9

Regex $ 1, $ 2 и т. Д.

19 голосов
/ 26 декабря 2010

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

Ответы [ 2 ]

33 голосов
/ 26 декабря 2010

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

Пример:

/* 
 * 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);
6 голосов
/ 26 декабря 2010

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

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

В качестве замены можно использовать косую или долларовую форму:

\1, \2 == $1, $2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...