Подтвердить что ты не робот

Что означает это регулярное выражение?

В недавнем интервью мне было предложено расшифровать это регулярное выражение

^\^[^^]

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

4b9b3361

Ответ 1

Он соответствует строкам, начинающимся с ^, за которым следует любой символ, отличный от ^.

Таким образом, он будет соответствовать:

^foo
^b

но не

foo
^^b

Объяснение:

Caret (^) является метасимволом регулярного выражения с двумя разными значениями:

Вне класса символов (1-е использование в вашем регулярном выражении) он работает как начало привязки.

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

Предшествующее регулярное выражение с \ ускоряет его (делает его неспецифичным). Второе использование ^ в вашем регулярном выражении экранируется и соответствует строке ^ в строке.

Внутри класса символов a ^, который не является первым символом класса символов, обрабатывается буквально. Итак, 4-е использование в вашем регулярном выражении - это буквальный ^.

Еще несколько примеров, чтобы сделать это ясно:

  • ^a        : Соответствует началу строки с a
  • ^ab      : Соответствует началу строки с a, за которым следует b
  • [a]      : Соответствует строке, которая имеет a
  • [^a]      : Соответствует строке, которая не имеет a
  • ^a[^a]: соответствует строке начиная с a, за которым следует любое кроме a.

Ответ 2

Я тестирую это регулярное выражение здесь, однако оно не кажется действительным.
Первый ^ обозначает начало строки.
Первый \ избегает следующего \.
Таким образом, второе "^" не экранировано Наконец, первый карет внутри квадратных скобок [^ действует как отрицание, а второй ^] не экранируется, поскольку результат недействителен.

IMHO правильное регулярное выражение должно быть ^\^[^\^]
Ребята, любезно подтвердите. Большое спасибо

Ответ 3

Сопоставление начала строки или строки за которым следует буквальный \ за которым следует начало строки или строки за которым следует любой символ, который не является пространством, возвратом или новым символом строки

Ответ 4

Первый ^ - начало строки.

Второй - это буквальный символ ^ (\, чтобы избежать другого обычного значения ^)

Третий - сказать

класс символов, который не включает символ ^

Пример для показа с помощью 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"