Что означает символ начала в регулярных выражениях? Метасимвол ^ в регулярных выражениях

Что означает символ начала в регулярных выражениях? Метасимвол ^ в регулярных выражениях

Каретка (^) - это один из многих символов для создания шаблонов в регулярных выражениях.

Каретка соответствует началу строки или определенной строке. Но это еще не все, что связано с символом каретки (^).

Символ каретки (^) часто называют ”якорем”, поскольку он привязывает шаблон к началу строки или линии. Таким образом, его можно назвать “якорем начала строки”.

Другой якорь — это знак доллара ($), который привязывает шаблон к концу строки, что означает ”якорь конца строки”.

Что делает символ каретки в RegEx?

Есть две основные вещи, которые делает символ каретки - он соответствует началу строки или началу строки, и он отрицает набор символов, когда вы помещаете его внутрь квадратных скобок.

Кроме того, вы можете захотеть сопоставить сам символ каретки, поскольку он используется и для других целей, помимо регулярных выражений. В этом случае его нужно экранировать.

Как сопоставить начало строки с символом каретки

Чтобы сопоставить начало строки с символом каретки, добавьте его к вашему шаблону.

В примере ниже я использовал шаблон /^hello\s*world/igm, который будет соответствовать только тексту hello world, находящемуся в начале строки. Любой другой текст hello world между строками или в конце строки не будет соответствовать:

Screenshot-2023-04-20-at-14.21.33

Кроме того, шаблон /^c/igm будет соответствовать словам, начинающимся с буквы c, только если они находятся в начале строки:

Screenshot-2023-04-20-at-14.22.33

Как отрицать набор символов с помощью каретки

Еще одна вещь, которую можно сделать с помощью каретки, — это отрицание набора символов. Например, если вы хотите отрицать гласные, вы можете поместить их в набор символов и добавить к ним карету:

Screenshot-2023-04-20-at-14.29.46

Видно, что все гласные не совпали.

Как сопоставить каретку как символ в строке

Каретку можно использовать и для других целей, например, для экспоненциации в математике или побитового оператора XOR в C++.

Если вы хотите сопоставить его, вы должны экранировать его обратной косой чертой , так как он распознается как метасимвол движками RegEx:

Screenshot-2023-04-20-at-14.39.07

Метасимвол каретки отлично работает в JavaScript. В приведенном ниже фрагменте кода показано, как я тестирую его с некоторыми строками:

const text1 = `There's hello world in every programming language
Hello world is what starts many programming language courses.
Many programmers don't know any other hello apart from hello world.`;

const text2 = `caret is anchors your pattern to the start of a line
To match the caret itself, you have to escape it.`;

const text3 = '4 raised to power 2 in mathematics is 4 ^ 2';

const re1 = /^hello\s*world/gim;
const re2 = /^c/gim;
const re3 = /\^/;

console.log(re1.test(text1)); //true
console.log(re2.test(text2)); //true
console.log(re3.test(text3)); //true

Заключение

В этой статье вы узнали, как можно использовать ”якорь начала строки” (метасимвол каретки ^) для привязки шаблона к началу строки или строки как в механизмах RegEx, так и в JavaScript.

Чтобы узнать о якоре конца строки ($), вы можете прочитать эту статью.

Счастливого кодирования!

Источник