JavaRush /Blog Jawa /Random-JV /Регулярные выражения в Java
terranum
tingkat
Milan

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

Diterbitake ing grup
RegExРегулярное выражение это своего рода шаблон, который может быть применен к тексту (String, в Java). Java предоставляет пакет java.util.regex для сопоставления с регулярными выражениями. Регулярные выражения очень похожи на язык программирования Perl и очень просты в освоении. Регулярное выражение or соответствует тексту (его части) or нет. * Если регулярное выражение совпадает с частю текста, то мы можем найти еe. ** Если регулярное выражение составное, то мы можем легко выяснить, Howая часть регулярного выражения совпадает с Howой частью текста.

Первый пример

Регулярное выражение "[a-z] +" соответствует всем строчныем буквам в тексте. [a-z] означает любой символ от a до z включительно, и + означает "один or более" символов. Предположим, что мы поставляем строку "code 2 learn java tutorial ". Как это сделать в Java Во-первых, вы должны составить шаблон:

import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Далее вы должны создать matcher для текста, отправив сообщение на схеме:

Matcher m = p.matcher(“code 2 learn java tutorial”);
ПРИМЕЧАНИЕ: Ни Pattern ни Matcher не имеют конструкторов, мы создаем их с помощью методов класса Pattern. Pattern Class: Объект класса составляет представление регулярного выражения. Класс Pattern не предусматривает ниHowих публичных конструкторов. Whatбы создать шаблон, необходимо сначала вызвать один из публичных статических методов, которые затем возвращают an object класса Pattern. Эти методы принимают регулярное выражение в качестве аргумента. Matcher Class: Объект "Искатель" является двигателем, который интерпретирует шаблон и выполняет операции сопоставления с входной строкой. Как и Pattern класс, Matcher не имеет публичных конструкторов. Вы получаете an object Matcher вызовом метода matcher, на an objectе класса Pattern. После того How мы выполнor эти шаги, и теперь у нас есть экземпляр класса Matcher m ,и теперь мы можем проверить, был найден шаблон or нет, и если да, то в Howой позиции, и т.д. m.matches() возвращает true, если шаблон соответствует всей строке, иначе false. m.lookingAt() возвращает true, если шаблон соответствует началу строки, и false в противном случае. m.find () возвращает true, если шаблон совпадает с любой частью текста.

We find совпадение

После успешного сопостовления, m.start() вернет индекс первого символа, совпавшего и m.end() вернет индекс последнего совпавшего символа, плюс один. Если была предпринята неудачная попытка и совпадения не нашлось, m.start() и m.end() будут бросать IllegalStateException
  • Это RuntimeException, так что вам не придется его ловить.
Может показаться странным, что m.end() возвращает индекс последнего совпавшего символа плюс один, но это именно то, что требуется большинству методов класса String.
  • Например, “Now is the time“.substring(m.start(), m.end())
вернет ту же самую строку. Взглянем на code:

import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}

Output: code*learn*java*tutorial*

Дополнительные методы

Если есть совпадение, то:
  • m.replaceFirst(replacement) возвращает новую строку, где первая подстрока, совпавшая с шаблоном будет заменена на replacement
  • m.replaceAll(replacement) возвращает новую строку, где каждая подстрока, совпавшая с шаблоном будет заменена
  • m.find(StartIndex) находи следующее соответствие, начиная с указанного индекса
  • m.reset() сбрасывает шаблон
  • m.reset(NewText) сбрасывает искатель, и дает ему новый текст (может быть String, StringBuffer or CharBuffer)

Синтаксис регулярных выражений

  • ^ Соответствует началу строки.
  • $ Соответствует концу строки.
  • . Соответствует любому одиночному символу, кроме символа новой строки. Использование опции m позволяет ему соответствовать новой строке.
  • [...] Соответствует любой одиночный символ в скобках.
  • [^ ...] Соответствует любому одному символу, не в скобках.
  • \A Начало всю строку.
  • \z Конец всей строки.
  • \Z Конец всей строки, кроме конечного терминатора линии.
  • re* Соответствует 0 or более вхождений предшествующего выражения.
  • re+ Одно or более совпадений предыдущего выражения.
  • re? Соответствует 0 or 1 местонахождению предыдущего выражения.
  • re{n} Соответствует ровно N Количество вхождений предшествующего выражения.
  • re{n,} Соответствует N or более вхождений предшествующего выражения.
  • re{n, m} Соответствует не менее n и не более m вхождений предыдущего выражения.
  • a|b Соответствует a or b.
  • (re) Группа регулярных выражений и помнящая найденный текст.
  • (?: re) Группы регулярных выражений, не помнящая найденный текст.
  • (?> re) Соответствует независимому шаблону без возвратов.
  • \w Соответствует буквам и цифрам [a-zA-Z_0-9].
  • \W Это не буквы и не цифры.
  • \s Соответствует пробелам. Эквивалентно [\t\n\r\f].
  • \S Не пробельные символы.
  • \d Соответствует цифрам. Эквивалентно [0-9].
  • \D Соответствует не цифрам.
  • \G Соответствует точки последнего совпадения.
  • \n Соответствует новой строке.
  • \b Совпадает на границе слова.
  • \B Совпадает не на границе слова.
  • \n, \t, etc. Символы новой строки, возврата каретки, вкладки и т.д.
  • \Q Цитата все символы до \ E.
  • \E Заканчивается цитирование начатое с \ Q.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION