Выражение регулярного выражения с \ 1 ссылками, не совпадающими с желаемой строкой - PullRequest
1 голос
/ 23 января 2020

Я работаю над этим выражением регулярного выражения, и у меня есть путаница, как оно работает.

/^(\d+)\s\1\s\1$/

Я знаю, что

^ is start of line 
() shows capture group
\d+ shows digits 
\s is whitespace 
\1 shows to match first group
$ the end 

запутанная часть здесь $ и почему она соответствует до "40 40 40 " но not "40 40 40 40" и роль $

Ответы [ 2 ]

1 голос
/ 23 января 2020

\1 относится к первой группе захвата в регулярном выражении. \2 будет ссылаться на вторую группу захвата, а \ n будет ссылаться на n-ю группу захвата.

В регулярном выражении /^(\d+)\s\1\s\1$/. \1 будет соответствовать единственной группе цифр, которой соответствует первая группа захвата (\d+).

$ в /^(\d+)\s\1\s\1$/ Означает, что она должна заканчиваться еще одной цифрой.

^ in /^(\d+)\s\1\s\1$/ Означает, что он должен начинаться еще с одной цифры.

0 голосов
/ 23 января 2020

$ соответствует «концу строки». Как вы определили шаблон регулярного выражения, он не должен совпадать ни с одной из ваших строк, потому что 40 40 40 имеет дополнительный пробел в конце до конца строки, а 40 40 40 40 имеет дополнительный пробел и цифры после третьего 40 и до конца строки.

Если вы удалите $, то он будет соответствовать обеим вашим строкам или любой строке, начинающейся с 40 40 40, поэтому, например, он также будет совпадать с 40 40 40 test.

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