В недавнем интервью мне было предложено расшифровать это регулярное выражение
^\^[^^]
Не могли бы вы помочь мне. Также, пожалуйста, предоставьте несколько ссылок, где я могу изучить регулярное выражение для интервью.
В недавнем интервью мне было предложено расшифровать это регулярное выражение
^\^[^^]
Не могли бы вы помочь мне. Также, пожалуйста, предоставьте несколько ссылок, где я могу изучить регулярное выражение для интервью.
Он соответствует строкам, начинающимся с ^, за которым следует любой символ, отличный от ^.
Таким образом, он будет соответствовать:
^foo
^b
но не
foo
^^b
Объяснение:
Caret (^) является метасимволом регулярного выражения с двумя разными значениями:
Вне класса символов (1-е использование в вашем регулярном выражении) он работает как начало привязки.
Внутри класса символов он действует как negator , если используется как первый символ класса символов (третий используется в вашем регулярном выражении).
Предшествующее регулярное выражение с \ ускоряет его (делает его неспецифичным). Второе использование ^ в вашем регулярном выражении экранируется и соответствует строке ^ в строке.
Внутри класса символов a ^, который не является первым символом класса символов, обрабатывается буквально. Итак, 4-е использование в вашем регулярном выражении - это буквальный ^.
Еще несколько примеров, чтобы сделать это ясно:
^a : Соответствует началу строки
с a^ab : Соответствует началу строки
с a, за которым следует b[a] : Соответствует строке, которая
имеет a[^a] : Соответствует строке, которая
не имеет a^a[^a]: соответствует строке
начиная с a, за которым следует любое
кроме a.Я тестирую это регулярное выражение здесь, однако оно не кажется действительным.
Первый ^ обозначает начало строки.
Первый \ избегает следующего \.
Таким образом, второе "^" не экранировано
Наконец, первый карет внутри квадратных скобок [^ действует как отрицание, а второй ^] не экранируется, поскольку результат недействителен.
IMHO правильное регулярное выражение должно быть ^\^[^\^]
Ребята, любезно подтвердите. Большое спасибо
Сопоставление начала строки или строки за которым следует буквальный \ за которым следует начало строки или строки за которым следует любой символ, который не является пространством, возвратом или новым символом строки
Первый ^ - начало строки.
Второй - это буквальный символ ^ (\, чтобы избежать другого обычного значения ^)
Третий - сказать
класс символов, который не включает символ
^
Пример для показа с помощью Ruby:
ruby-1.9.2-p0 > "hello" =~ /^h/ # it found a match at position 0
=> 0
ruby-1.9.2-p0 > "hello" =~ /^e/ # nil means can't find it
=> nil
ruby-1.9.2-p0 > "he^llo" =~ /\^/ # found at position 2
=> 2
ruby-1.9.2-p0 > "he^llo"[/[^^]*/] # anything repeatedly but not including the ^ character
=> "he"