JavaRush /Java Blog /Random-TL /Mga Regular na Ekspresyon sa Java
terranum
Antas
Milan

Mga Regular na Ekspresyon sa Java

Nai-publish sa grupo
RegExAng isang regular na expression ay isang uri ng pattern na maaaring ilapat sa teksto (String, sa Java). Nagbibigay ang Java ng java.util.regex package para sa pagtutugma ng mga regular na expression. Ang mga regular na expression ay halos kapareho sa Perl programming language at napakadaling matutunan. Ang isang regular na expression ay maaaring tumugma sa teksto (bahagi nito) o hindi. * Kung ang isang regular na expression ay tumutugma sa isang piraso ng teksto, makikita natin ito. ** Kung tambalan ang regular na expression, madali nating malalaman kung aling bahagi ng regular na expression ang tumutugma sa kung aling bahagi ng teksto.

Unang halimbawa

Ang regular na expression na " [a-z] +" ay tumutugma sa lahat ng maliliit na titik sa teksto. [a-z]nangangahulugang anumang karakter mula ahanggang zkasama, at +nangangahulugang "isa o higit pa" na mga character. Ipagpalagay natin na nagbibigay tayo ng string na "code 2 learn java tutorial". Paano ito gawin sa Java Una, dapat kang lumikha ng isang template:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Susunod na kailangan mong lumikha matcherpara sa teksto sa pamamagitan ng pagpapadala ng mensahe sa diagram:
Matcher m = p.matcher(“code 2 learn java tutorial”);
TANDAAN: Wala alinman sa mga constructor Pattern, Matcherginagawa namin ang mga ito gamit ang mga pamamaraan ng klase Pattern. Pattern Class:Ang object ng klase ay bumubuo ng isang representasyon ng isang regular na expression. Ang klase ng Pattern ay hindi nagbibigay ng anumang mga pampublikong konstruktor. Upang lumikha ng isang template, dapat mo munang tawagan ang isa sa mga pampublikong static na pamamaraan, na pagkatapos ay magbabalik ng isang bagay ng klase Pattern. Ang mga pamamaraang ito ay kumukuha ng regular na pagpapahayag bilang argumento. Matcher Class:Ang Finder object ay isang makina na nagbibigay-kahulugan sa pattern at nagsasagawa ng pagtutugma ng mga operasyon sa input string. Tulad Patternng isang klase, Matcherwala itong mga pampublikong tagapagtayo. Makakakuha ka ng isang bagay Matchersa pamamagitan ng pagtawag sa isang pamamaraan matchersa isang bagay ng klase Pattern. Kapag nakumpleto na natin ang mga hakbang na ito, at ngayon ay mayroon na tayong instance ng class Matcher m , maaari na nating suriin kung natagpuan ang pattern o hindi, at kung gayon, sa anong posisyon, atbp. m.matches()nagbabalik ng true kung ang pattern ay tumutugma sa buong string, false kung hindi. m.lookingAt()nagbabalik ng true kung ang pattern ay tumutugma sa simula ng string, false kung hindi. m.find ()nagbabalik ng true kung ang pattern ay tumutugma sa anumang bahagi ng teksto.

Paghahanap ng kapareha

Pagkatapos ng matagumpay na tugma, ibabalik ng m.start() ang index ng unang character na naitugma at ibabalik ng m.end() ang index ng huling character na natugma, kasama ang isa. Kung ang isang hindi matagumpay na pagtatangka ay ginawa at walang nahanap na katugma, m.start()sila m.end()ay magtaponIllegalStateException
  • Ito ay RuntimeExceptionpara hindi mo na kailangang mahuli.
Maaaring mukhang kakaiba na m.end()ibalik ang index ng huling katugmang character kasama ang isa, ngunit iyon mismo ang karamihan sa String.
  • Halimbawa,“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.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION