Что такое gsub (/ (\ d {4}) \ / (\ d \ d) \ / (\ d \ d) \ / (. *) /, '\ 1- \ 2- \ 3- \ 4') имею в виду? - PullRequest
2 голосов
/ 01 апреля 2011

Я наткнулся на это на коде ruby. Я знаю, \ d {4}) \ / (\ d \ d) \ / (\ d \ d) \ / (. *) / Означает, но что означает \ 1- \ 2- \ 3- \ 4?

Ответы [ 6 ]

3 голосов
/ 01 апреля 2011

Это обратные ссылки.\ 1 означает результат первой группы скобок (), то есть (\d\d), \ 2 означает 2-ю группу и т. Д.

3 голосов
/ 01 апреля 2011

\1-\2-\3-\4 - это обратные ссылки на захваченные данные внутри самого регулярного выражения.

Таким образом, \1 содержит данные, полученные в первой группе, \2 - данные, полученные во второй группе, \3 - данные, полученные в 3-й группе и т.

Смотрите здесь для Ruby реализации

1 голос
/ 01 апреля 2011

преобразовать 1234/12/12/XX в 1234-12-12-XX

0 голосов
/ 01 апреля 2011

Вы можете захватить части шаблона регулярного выражения, поместив их в круглые скобки, а затем в части подстановки сослаться на них с \ 1, \ 2, \ 3, ... в соответствии с порядком их появления.

В вашем примере \ 1 будет первыми 4 цифрами, \ 2 будет вторыми двумя, \ 3 будет следующими двумя, а \ 4 будет остальными.

Таким образом, «20100410молоко» будет заменено на «2010-04-10-молоко», потому что \ 1 будет 2010, \ 2 04, \ 3 10 и \ 4 молоко.

0 голосов
/ 01 апреля 2011

Они ссылаются на сопоставленные группы (обратные ссылки замещения)

Для получения дополнительной информации см. http://www.regular -expressions.info / ruby.html

0 голосов
/ 01 апреля 2011

Я думаю, что \ 1, \ 2 и т. Д. Просто ссылаются на соответствующие группы

т.е. \ 1 == (\ d {4})

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