Regex – Сопоставление начала или конца строки (якоря строк)

Регулярные выражения, обычно называемые regex, являются мощными инструментами для сопоставления с шаблонами и манипуляции текстом. Шаблоны regex позволяют разработчикам выполнять сложные поиски строк, замены и проверки. Среди множества функций regex якоря строк являются ключевыми компонентами для точного определения начала или конца строки.

В регулярных выражениях якоря строк имеют нулевую ширину и не предназначены для сопоставления символов внутри строки. Вместо этого они указывают на конкретные позиции — либо начало, либо конец строки.

В этой статье мы рассмотрим якоря строк и разберемся, как они работают в регулярных выражениях.

 // Список предложенийСтрока[] предложения = {"Солнце светит", //0«Яблоки вкусные», //1«Луна яркая», //2"Птицы поют" //3};// Якорь начальной строки(^)String beginWithPattern = "^The"; // Соответствует строкам 0 и 2// Конец якоря строки($)String endWithPattern = "ing$"; //Соответствует строкам 0 и 3

1. Линейные якоря

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

Для сопоставления начала или конца строки мы используем следующие якоря:

  • Вставка(^): соответствует позиции перед первым символом в строке. Это гарантирует, что указанный шаблон появится в самом начале строки, без каких-либо предшествующих символов.
  • Доллар($): соответствует позиции сразу после последнего символа в строке. Он гарантирует, что указанный шаблон будет находиться прямо перед концом строки, без каких-либо символов после него.

Чтобы лучше понять якоря линий, давайте рассмотрим несколько простых примеров:

Регулярное выражение Нить Совпадения
азбука Совпадает с
с$ азбука Совпадения c
^[a-zA-Z]+$ азбука Совпадения abc
^[абв]$ азбука Соответствует a или b или c
[^абв] азбука Не совпадает. Соответствующая строка начинается с любого символа, кроме a,b,c.
^[мтс][аейоу] мать Совпадения. Поиск слов, начинающихся с m, t или s. Затем сразу следует гласная.
[^n]г$ король
нг
Не совпадает. Строка должна заканчиваться на g, но не на ng.
[^к]г$ конг Совпадает.
^г.+г$ банда Совпадения. Слово должно начинаться и заканчиваться на g. Любое количество букв между ними.

См. также: Регулярное выражение Java, разрешающее только буквенно-цифровые символы

2. Регулярное выражение для сопоставления начала строки(^)

"^<insertPatternHere>"
  • Знак каретки ^ соответствует позиции перед первым символом в строке.
  • Применение ^h к howtodoinjava соответствует h.
  • Применение ^t к howtodoinjava не даст никакого результата, поскольку ожидается, что строка начнется с t.
  • Если у нас есть многострочная строка, по умолчанию символ каретки соответствует позиции перед самым первым символом во всей строке. Чтобы соответствовать позиции перед первым символом любой строки, мы должны включить многострочный режим в регулярном выражении.
    В этом случае курсор меняется с сопоставления только с началом всей строки на сопоставление с началом любой строки внутри строки.
Описание Соответствующий шаблон
Строка начинается с цифры «^\\d» или «^[0-9]»
Строка начинается с символа «^[az]» или «^[AZ]»
Строка начинается с символа(без учета регистра) «^[a-zA-Z]»
Строка начинается со слова «^слово»
Строка начинается со специального символа «^[!@#\\$%\\^\\&*\\)\\(+=._-]»
Pattern.compile("^[0-9]").matcher("1stKnight").find();Pattern.compile("^[a-zA-Z]").matcher("FirstKnight").find();Pattern.compile("^First").matcher("FirstKnight").find();Pattern.compile("^[!@#\\$%\\^\\&*\\)\\(+=._-]").matcher("*1stKnight").find();

Вывод программы.

 истинныйистинныйистинныйистинный

3. Регулярное выражение для сопоставления с концом строки($)

"<insertPatternHere>$"
  • Знак доллара $ соответствует позиции после последнего символа в строке.
  • Применение a$ к howtodoinjava соответствует a.
  • Применение v$ к howtodoinjava не даст никакого результата, поскольку ожидается, что строка будет заканчиваться на v.
  • Если у нас есть многострочная строка, по умолчанию символ доллара соответствует позиции после самого последнего символа во всей строке.
    Чтобы сопоставить позицию после последнего символа любой строки, мы должны включить многострочный режим в регулярном выражении. В этом случае доллар меняется с соответствия только последнему символу всей строки на соответствие последней строке внутри строки.
Описание Соответствующий шаблон
Строка заканчивается числом «\\d$» или «[0-9]$»
Строка заканчивается символом «[az]$» или «[AZ]$»
Строка заканчивается символом(без учета регистра) [a-zA-Z]$
Строка заканчивается словом «слово$»
Строка заканчивается специальным символом «[!@#\\$%\\^\\&*\\)\\(+=._-]$»
Pattern.compile("[0-9]$").matcher("FirstKnight123").find();Pattern.compile("[a-zA-Z]$").matcher("FirstKnight").find();Pattern.compile("Knight$").matcher("FirstKnight").find();Pattern.compile("[!@#\\$%\\^\\&*\\)\\(+=._-]$").matcher("FirstKnight&").find();

Вывод программы.

 истинныйистинныйистинныйистинный

Напишите мне ваши вопросы, связанные с программами для регулярных выражений, начинающимися с java и заканчивающимися на java.

Прокрутить вверх