Рубрики

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

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


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

ClassDescription
util.regex.PatternUsed for defining patterns
util.regex.MatcherUsed for performing match operations on text using patterns
PatternSyntaxExceptionUsed for indicating syntax error in a regular expression pattern

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

Modifier and TypeMethodDescription
intend()It is used to return the offset after the last character matched.
intend(int group)It is used to return the offset after the last character of the subsequence captured by the given group during this match.
Stringgroup()It is used to return the input subsequence matched by the previous match.
Stringgroup(int group)It is used to return the input subsequence captured by the given group during the previous match operation.
intgroupCount()It is used to return the number of capturing groups in this match result’s pattern.
intstart()It is used to return the start index of the match.
intstart(int group)It is used to return the start index of the subsequence captured by the given group during this match.

  1. Класс java.util.regex.Pattern: Этот класс представляет собой компиляцию регулярных выражений, которые могут использоваться для определения различных типов скороговорок, не предоставляя открытых конструкторов. Это можно создать, вызвав метод compile (), который принимает регулярное выражение в качестве первого аргумента и, таким образом, возвращает шаблон после выполнения.

    Modifier and TypeMethodDescription
    static Patterncompile(String regex)It is used to compile the given regular expression into a pattern.
    static Patterncompile(String regex, int flags)It is used to compile the given regular expression into a pattern with the given flags.
    intflags()It is used to return this pattern’s match flags.
    Matchermatcher(CharSequence input)It is used to create a matcher that will match the given input against this pattern.
    static booleanmatches(String regex, CharSequence input)It is used to compile the given regular expression and attempts to match the given input against it.
    Stringpattern()It is used to return the regular expression from which this pattern was compiled.
    static Stringquote(String s)It is used to return a literal pattern String for the specified String.
    String[]split(CharSequence input)It is used to split the given input sequence around matches of this pattern.
    String[]split(CharSequence input, int limit)It is used to split the given input sequence around matches of this pattern.
    StringtoString()It is used to return the string representation of this pattern.

    // Простая Java-программа для демонстрации работы
    // Pattern.matches () в Java

    import java.util.regex.Pattern;

      

    class Demo

    {

        public static void main(String args[])

        {

            // Следующая строка выводит "true", потому что все

            // текст "geeksforgeeks" соответствует шаблону "geeksforge * ks"

            System.out.println (Pattern.matches("geeksforge*ks",

                                                "geeksforgeeks"));

      

            // Следующая строка печатает "ложь", потому что весь

            // текст "geeksfor" не соответствует шаблону "g * geeks *"

            System.out.println (Pattern.matches("g*geeks*",

                                                "geeksfor"));

        }

    }

  2. java.util.regex.Matcher class: этот объект используется для выполнения операций сопоставления для входной строки в java, таким образом интерпретируя ранее объясненные шаблоны. Это также не определяет общедоступных конструкторов. Это может быть реализовано путем вызова matcher () для любого объекта шаблона.

    Modifier and TypeMethodDescription
    booleanfind()It is mainly used for searching multiple occurrences of the regular expressions in the text.
    booleanfind(int start)It is used for searching occurrences of the regular expressions in the text starting from the given index.
    intstart()It is used for getting the start index of a match that is being found using find() method.
    intend()It is used for getting the end index of a match that is being found using find() method. It returns index of character next to last matching character.
    intgroupCount()It is used to find the total number of the matched subsequence.
    Stringgroup()It is used to find the matched subsequence.
    booleanmatches()It is used to test whether the regular expression matches the pattern.

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

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

    1. Java-программа для демонстрации простого поиска по шаблону

      // Простая Java-программа для демонстрации работы
      // Соответствие строк в Java

      import java.util.regex.Matcher;

      import java.util.regex.Pattern;

        

      class Demo

      {

          public static void main(String args[])

          {

              // Создать шаблон для поиска

              Pattern pattern = Pattern.compile("geeks");

        

              // Поиск над шаблоном в "geeksforgeeks.org"

              Matcher m = pattern.matcher("geeksforgeeks.org");

        

              // Печать начальных и конечных индексов шаблона

              // в текст

              while (m.find())

                  System.out.println("Pattern found from " + m.start() +

                                     " to " + (m.end()-1));

          }

      }

      Выход:

      Pattern found from 0 to 4
      Pattern found from 8 to 12
    2. Java-программа для демонстрации простого поиска по регулярным выражениям

      // Простая Java-программа для демонстрации работы
      // Соответствие строк в Java

      import java.util.regex.Matcher;

      import java.util.regex.Pattern;

        

      class Demo

      {

          public static void main(String args[])

          {

              // Создать шаблон для поиска

              Pattern pattern = Pattern.compile("ge*");

        

              // Поиск над шаблоном в "geeksforgeeks.org"

              Matcher m = pattern.matcher("geeksforgeeks.org");

        

              // Печать начальных и конечных индексов шаблона

              // в текст

              while (m.find())

                  System.out.println("Pattern found from " + m.start() +

                                     " to " + (m.end()-1));

          }

      }

      Выход:

      Pattern found from 0 to 2
      Pattern found from 8 to 10
      Pattern found from 16 to 16
      
    3. Java-программа для демонстрации поиска без учета регистра

      // Простая Java-программа для демонстрации работы
      // Соответствие строк в Java

      import java.util.regex.Matcher;

      import java.util.regex.Pattern;

        

      class Demo

      {

          public static void main(String args[])

          {

              // Создать шаблон для поиска

              Pattern pattern = 

              Pattern.compile("ge*", Pattern.CASE_INSENSITIVE);

        

              // Поиск над шаблоном в "geeksforgeeks.org"

              Matcher m = pattern.matcher("GeeksforGeeks.org");

        

              // Печать начальных и конечных индексов шаблона

              // в текст

              while (m.find())

                  System.out.println("Pattern found from " + m.start() +

                                     " to " + (m.end()-1));

          }

      }

      Выход:

      Pattern found from 0 to 2
      Pattern found from 8 to 10
      Pattern found from 16 to 16
      
    4. Java-программа для демонстрации работы split () для разделения текста на основе шаблона разделителя

      // Java-программа для демонстрации работы разделения текста по
      // данный шаблон

      import java.util.regex.Matcher;

      import java.util.regex.Pattern;

        

      class Demo

      {

          public static void main(String args[])

          {

              String text = "geeks1for2geeks3";

        

              // Определяет строковый шаблон для поиска

              String delimiter =  "\\d";

              Pattern pattern = Pattern.compile(delimiter,

                                              Pattern.CASE_INSENSITIVE);

        

              // Используется для поиска строки без учета регистра

              String[] result = pattern.split(text);

        

        

              for (String temp: result)

                  System.out.println(temp);

          }

      }

      Выход:

      geeks
      for
      geeks
      
  3. Класс PatternSyntaxException: этот объект Regex используется для обозначения синтаксической ошибки в шаблоне регулярного выражения и является непроверенным исключением.
    Modifier and TypeMethodDescription
    StringgetDescription()It is used to retrieve the description of the error.
    intgetIndex()It is used to retrieve the error index.
    StringgetMessage()It is used to return a multi-line string containing the description of the syntax error and its index, the erroneous regular-expression pattern, and a visual indication of the error index within the pattern.
    StringgetPattern()It is used to retrieve the erroneous regular-expression pattern.

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

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

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

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

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

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

Рекомендуемые посты:

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

0.00 (0%) 0 votes