Учебники по Java

Ява ГЛАВНАЯ Введение в Java Начало работы с Java Синтаксис Java Java-комментарии Java-переменные Типы данных Java Приведение типов Java Операторы Java Java-строки Java-математика Логические значения Java Java, если...иначе Java-переключатель Java-цикл во время выполнения Java для цикла Перерыв/продолжение Java Массивы Java

Java-методы

Java-методы Параметры метода Java Перегрузка метода Java Область применения Java Java-рекурсия

Java-классы

Java ООП Классы/объекты Java Атрибуты класса Java Методы класса Java Конструкторы Java Модификаторы Java Инкапсуляция Java Java-пакеты/API Наследование Java Java-полиморфизм Внутренние классы Java Java-абстракция Java-интерфейс Перечисления Java Пользовательский ввод Java Дата Java Список массивов Java Связанный список Java Java HashMap Набор хэшей для Java Java-итератор Классы-оболочки Java Исключения Java Java регулярное выражение Java-потоки Java-лямбда

Обработка файлов Java

Java-файлы Создание/запись файлов Java Файлы чтения Java Java Удалить файлы

Java Как

Добавить два числа

Справочник по Java

Ключевые слова Java Строковые методы Java Java математические методы

Примеры Java

Примеры Java Компилятор Java Java-упражнения Java-викторина Java-сертификат


Регулярные выражения Java


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

Регулярное выражение — это последовательность символов, формирующая шаблон поиска. Когда вы ищете данные в тексте, вы можете использовать этот шаблон поиска, чтобы описать то, что вы ищете.

Регулярное выражение может состоять из одного символа или более сложного шаблона.

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

В Java нет встроенного класса регулярных выражений, но мы можем импортировать java.util.regex пакет для работы с регулярными выражениями. В пакет входят следующие классы:

  • PatternКласс — определяет шаблон (для использования в поиске)
  • MatcherКласс - Используется для поиска шаблона
  • PatternSyntaxExceptionКласс — указывает на синтаксическую ошибку в шаблоне регулярного выражения.

Пример

Узнайте, есть ли в предложении слово «w3schools»:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

Объяснение примера

В этом примере слово «w3schools» ищется в предложении.

Во-первых, шаблон создается с помощью Pattern.compile()метода. Первый параметр указывает, какой шаблон ищется, а второй параметр имеет флаг, указывающий, что поиск должен быть нечувствительным к регистру. Второй параметр является необязательным.

Метод matcher()используется для поиска шаблона в строке. Он возвращает объект Matcher, который содержит информацию о выполненном поиске.

Метод find()возвращает true, если шаблон в строке найден, и false, если не найден.



Флаги

Флаги в compile()методе изменяют способ выполнения поиска. Вот несколько из них:

  • Pattern.CASE_INSENSITIVE- Регистр букв будет игнорироваться при выполнении поиска.
  • Pattern.LITERAL- Специальные символы в шаблоне не будут иметь особого значения и будут рассматриваться как обычные символы при выполнении поиска.
  • Pattern.UNICODE_CASE- Используйте его вместе с CASE_INSENSITIVEфлагом, чтобы также игнорировать регистр букв вне английского алфавита.

Шаблоны регулярных выражений

Первым параметром Pattern.compile()метода является шаблон. Он описывает то, что ищется.

Скобки используются для поиска диапазона символов:

Expression Description
[abc] Find one character from the options between the brackets
[^abc] Find one character NOT between the brackets
[0-9] Find one character from the range 0 to 9

Метасимволы

Метасимволы — это символы со специальным значением:

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

квантификаторы

Квантификаторы определяют количества:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's

Примечание. Если в вашем выражении необходимо искать один из специальных символов, вы можете использовать обратную косую черту ( \ ), чтобы избежать их. В Java обратные косые черты в строках должны быть экранированы сами по себе, поэтому для экранирования специальных символов необходимы две обратные косые черты. Например, для поиска одного или нескольких вопросительных знаков можно использовать следующее выражение: "\\?"