Метасимволы и скобки в регулярных выражениях - PullRequest
1 голос
/ 22 июня 2010

Может кто-нибудь разработать / перевести это регулярное выражение на английский?

Спасибо.

var g = "123456".match(/(.)(.)/);

Я заметил, что результат выглядит следующим образом:

12,1,2

и я знаю, что точка означает любой символ, кроме новой строки.Но что это на самом деле делает?

Ответы [ 2 ]

4 голосов
/ 22 июня 2010

Пара круглых скобок (без символа «?» В качестве первого символа, указывающего на другое поведение) будет захватывать содержимое в группу.

В вашем примере первый элемент массива - это полное совпадение, а последующие элементы - любые совпадения группы.

Возможно, будет понятнее, если ваш код будет выглядеть примерно так:

var g = "123456".match(/.(.).(.)./);

Это будет соответствовать пяти символам, помещая второй и четвертый в группы 1 и 2 соответственно, таким образом, выводя 12345,2,4

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

Дайте мне знать, если это ясно, или дальнейшее объяснение поможет?

1 голос
/ 22 июня 2010

Он ищет два символа - любые символы из-за точек - и «захватывает» их, чтобы вы могли искать всю найденную строку, а также каждую из подстрок (захватывает).

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