Соответствует строкам, которые начинаются с ^
, за которыми следует любой символ , отличный от ^
.
Так что будет соответствовать:
^foo
^b
но не
foo
^^b
Пояснение:
Caret (^
) - метасимвол регулярного выражения с двумя различными значениями:
За пределами класса символов (первое использование в вашем регулярном выражении) он работает как начальный якорь .
Внутри класса символов он действует как отрицатель , если используется в качестве first символа класса символов (3-е использование в вашем регулярное выражение).
Предшествующее регулярному выражению с \
ускользает от него (делает его не специальным). Второе использование ^
в вашем регулярном выражении экранировано и соответствует литералу ^
в строке.
Внутри класса символов ^
, который не первый символ класса символов, обрабатывается буквально. Таким образом, 4-е использование в вашем регулярном выражении - буквальное ^
.
Еще несколько примеров, чтобы прояснить ситуацию:
^a
: соответствует началу строки
с a
^ab
: соответствует началу строки
с a
, за которым следует b
[a]
: соответствует строке, которая
имеет a
[^a]
: соответствует строке, которая
не имеет a
^a[^a]
: соответствует строке
начиная с a
, за которым следует любой
символ, отличный от a
.