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

Опубликовано: 4 Декабря, 2021

Регулярные выражения или регулярное выражение (короче) - это API для определения строковых шаблонов, которые можно использовать для поиска, манипулирования и редактирования строки в Java. Проверка электронной почты и пароли - это несколько областей строк, в которых Regex широко используется для определения ограничений. Регулярные выражения предоставляются в пакете java.util.regex. Он состоит из 3 классов и 1 интерфейса.


Пакет java.util.regex в основном состоит из следующих трех классов:

Класс Описание
util.regex.Pattern Используется для определения паттернов
util.regex.Matcher Используется для выполнения операций сопоставления текста с использованием шаблонов
PatternSyntaxException Используется для указания синтаксической ошибки в шаблоне регулярного выражения

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

Модификатор и тип Метод Описание
int конец() Он используется для возврата смещения после последнего совпавшего символа.
int конец (целая группа) Он используется для возврата смещения после последнего символа подпоследовательности, захваченного данной группой во время этого совпадения.
Нить группа() Он используется для возврата входной подпоследовательности, совпадающей с предыдущим совпадением.
Нить группа (целая группа) Он используется для возврата входной подпоследовательности, захваченной данной группой во время предыдущей операции сопоставления.
int groupCount () Он используется для возврата количества групп захвата в шаблоне результата совпадения.
int Начните() Он используется для возврата начального индекса совпадения.
int начало (группа int) Он используется для возврата начального индекса подпоследовательности, захваченной данной группой во время этого совпадения.
  1. Класс java.util.regex.Pattern: этот класс представляет собой компиляцию регулярных выражений, которые можно использовать для определения различных типов шаблонов, не предоставляя общедоступных конструкторов. Это можно создать, вызвав метод compile (), который принимает регулярное выражение в качестве первого аргумента и, таким образом, возвращает шаблон после выполнения.
    Модификатор и тип Метод Описание
    статический узор компилировать (строковое регулярное выражение) Он используется для компиляции данного регулярного выражения в шаблон.
    статический узор компиляция (регулярное выражение String, флаги int) Он используется для компиляции данного регулярного выражения в шаблон с заданными флагами.
    int флаги () Он используется для возврата флагов соответствия этого шаблона.
    Матчер сопоставитель (вход CharSequence) Он используется для создания сопоставителя, который будет сопоставлять данный ввод с этим шаблоном.
    статическое логическое значение совпадения (регулярное выражение String, ввод CharSequence) Он используется для компиляции данного регулярного выражения и пытается сопоставить данный ввод с ним.
    Нить шаблон() Он используется для возврата регулярного выражения, из которого был скомпилирован этот шаблон.
    статическая строка цитата (Строка) Он используется для возврата буквального шаблона String для указанной String.
    Нить[] split (вход CharSequence) Он используется для разделения данной входной последовательности на совпадения с этим шаблоном.
    Нить[] split (вход CharSequence, ограничение int) Он используется для разделения данной входной последовательности на совпадения с этим шаблоном.
    Нить нанизывать() Он используется для возврата строкового представления этого шаблона.
    // A Simple Java program to demonstrate working of
    // Pattern.matches() in Java
    import java.util.regex.Pattern;
    class Demo
    {
    public static void main(String args[])
    {
    // Following line prints "true" because the whole
    // text "geeksforgeeks" matches pattern "geeksforge*ks"
    System.out.println (Pattern.matches( "geeksforge*ks" ,
    "geeksforgeeks" ));
    // Following line prints "false" because the whole
    // text "geeksfor" doesn't match pattern "g*geeks*"
    System.out.println (Pattern.matches( "g*geeks*" ,
    "geeksfor" ));
    }
    }
  2. Класс java.util.regex.Matcher: этот объект используется для выполнения операций сопоставления для входной строки в java, таким образом интерпретируя ранее объясненные шаблоны. Это тоже не определяет никаких общедоступных конструкторов. Это можно реализовать, вызвав функцию matcher () для любого объекта шаблона.
    Модификатор и тип Метод Описание
    логический найти() В основном он используется для поиска нескольких вхождений регулярных выражений в тексте.
    логический найти (начало числа) Он используется для поиска вхождений регулярных выражений в тексте, начиная с заданного индекса.
    int Начните() Он используется для получения начального индекса совпадения, найденного с помощью метода find ().
    int конец() Он используется для получения конечного индекса совпадения, найденного с помощью метода find (). Он возвращает индекс символа рядом с последним совпадающим символом.
    int groupCount () Он используется для нахождения общего числа совпадающих подпоследовательностей.
    Нить группа() Он используется для поиска согласованной подпоследовательности.
    логический Матчи() Он используется для проверки соответствия регулярного выражения шаблону.

    Обратите внимание, что Pattern.matches () проверяет, совпадает ли весь текст с шаблоном или нет. Другие методы (продемонстрированные ниже) в основном используются для поиска нескольких вхождений шаблона в текст.

    Программы на Java для демонстрации работы compile (), find (), start (), end () и split ():

    1. Программа на Java для демонстрации простого поиска по шаблону
      // A Simple Java program to demonstrate working of
      // String matching in Java
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      class Demo
      {
      public static void main(String args[])
      {
      // Create a pattern to be searched
      Pattern pattern = Pattern.compile( "geeks" );
      // Search above pattern in "geeksforgeeks.org"
      Matcher m = pattern.matcher( "geeksforgeeks.org" );
      // Print starting and ending indexes of the pattern
      // in text
      while (m.find())
      System.out.println( "Pattern found from " + m.start() +
      " to " + (m.end()- 1 ));
      }
      }

      Выход:

      Шаблон найден от 0 до 4
      Шаблон найден с 8 по 12
    2. Программа на Java для демонстрации простого поиска по регулярным выражениям
      // A Simple Java program to demonstrate working of
      // String matching in Java
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      class Demo
      {
      public static void main(String args[])
      {
      // Create a pattern to be searched
      Pattern pattern = Pattern.compile( "ge*" );
      // Search above pattern in "geeksforgeeks.org"
      Matcher m = pattern.matcher( "geeksforgeeks.org" );
      // Print starting and ending indexes of the pattern
      // in text
      while (m.find())
      System.out.println( "Pattern found from " + m.start() +
      " to " + (m.end()- 1 ));
      }
      }

      Выход:

       Шаблон найден от 0 до 2
      Шаблон найден с 8 по 10
      Шаблон найден с 16 по 16
      
    3. Программа на Java для демонстрации поиска без учета регистра
      // A Simple Java program to demonstrate working of
      // String matching in Java
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      class Demo
      {
      public static void main(String args[])
      {
      // Create a pattern to be searched
      Pattern pattern =
      Pattern.compile( "ge*" , Pattern.CASE_INSENSITIVE);
      // Search above pattern in "geeksforgeeks.org"
      Matcher m = pattern.matcher( "GeeksforGeeks.org" );
      // Print starting and ending indexes of the pattern
      // in text
      while (m.find())
      System.out.println( "Pattern found from " + m.start() +
      " to " + (m.end()- 1 ));
      }
      }

      Выход:

      Шаблон найден от 0 до 2
      Шаблон найден с 8 по 10
      Шаблон найден с 16 по 16
      
    4. Программа на Java для демонстрации работы split () для разделения текста на основе шаблона разделителя
      // Java program to demonstrate working of splitting a text by a
      // given pattern
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      class Demo
      {
      public static void main(String args[])
      {
      String text = "geeks1for2geeks3" ;
      // Specifies the string pattern which is to be searched
      String delimiter = "\d" ;
      Pattern pattern = Pattern.compile(delimiter,
      Pattern.CASE_INSENSITIVE);
      // Used to perform case insensitive search of the string
      String[] result = pattern.split(text);
      for (String temp: result)
      System.out.println(temp);
      }
      }

      Выход:

      выродки
      для
      выродки
      
  3. Класс PatternSyntaxException: этот объект Regex используется для обозначения синтаксической ошибки в шаблоне регулярного выражения и является непроверенным исключением.
    Модификатор и тип Метод Описание
    Нить getDescription () Он используется для получения описания ошибки.
    int getIndex () Он используется для получения индекса ошибки.
    Нить getMessage () Он используется для возврата многострочной строки, содержащей описание синтаксической ошибки и ее индекс, шаблон ошибочного регулярного выражения и визуальную индикацию индекса ошибки в шаблоне.
    Нить getPattern () Он используется для получения ошибочного шаблона регулярного выражения.

Важные наблюдения / факты:

  1. Мы создаем объект шаблона, вызывая Pattern.compile (), конструктора нет. compile () - это статический метод в классе Pattern.
  2. Как и выше, мы создаем объект Matcher, используя matcher () для объектов класса Pattern.
  3. Pattern.matches () также является статическим методом, который используется для проверки, соответствует ли данный текст в целом шаблону или нет.
  4. find () используется для поиска нескольких вхождений шаблона в текст.
  5. Мы можем разделить текст на основе шаблона разделителя
    используя split ()

Статьи, основанные на регулярных выражениях Java:

  • Программа для удаления согласных из строки
  • Проверьте, содержит ли строка только алфавиты в Java, используя Regex
  • Разбор журнала доступа Apache в Java
  • Java | Удаление пробелов с помощью программы RegexJava для чтения всех мобильных номеров, присутствующих в данном файле
  • Программа для проверки действующего мобильного номера
  • Проверьте, действителен ли URL-адрес в Java
  • Проверьте, действителен ли адрес электронной почты на Java
  • Java.lang.String.matches () в Java
  • Проверить, есть ли в двоичной строке 0 между 1 или нет | Набор 2 (подход регулярного выражения)
  • Извлечь максимальное числовое значение из заданной строки | Набор 2 (подход Regex)
  • Найти все шаблоны «1 (0+) 1» в заданной строке | НАБОР 2 (подход регулярного выражения)
  • Получите первую букву каждого слова в строке, используя регулярное выражение в Java
  • Вывести первую букву каждого слова в строке, используя регулярное выражение
  • Извлечение каждого слова из строки с использованием Regex в Java
  • Программа для удаления гласных из строки
  • Сопоставители границ регулярных выражений в Java
  • Метод Split () String в Java с примерами
  • Квантификаторы в Java

Последние статьи о регулярных выражениях Java

Эта статья предоставлена Akash Ojha . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью и отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .