Регулярные выражения, обычно называемые 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.