JavaRush /Java блогы /Random-KK /Java тіліндегі тұрақты өрнектер
terranum
Деңгей
Milan

Java тіліндегі тұрақты өрнектер

Топта жарияланған
RegExТұрақты өрнек - мәтінге қолдануға болатын үлгі түрі (String, Java тілінде). Java кәдімгі өрнектерді сәйкестендіру үшін java.util.regex бумасын қамтамасыз етеді. Тұрақты өрнектер Perl бағдарламалау тіліне өте ұқсас және оларды үйрену өте оңай. Тұрақты өрнек мәтінге (оның бөлігі) сәйкес келеді немесе сәйкес келмейді. * Егер тұрақты өрнек мәтін бөлігіне сәйкес келсе, біз оны таба аламыз. ** Тұрақты тіркес құрама болса, онда тұрақты тіркестің қай бөлігі мәтіннің қай бөлігіне сәйкес келетінін оңай анықтай аламыз.

Бірінші мысал

« » тұрақты тіркесі [a-z] +мәтіндегі барлық кіші әріптерге сәйкес келеді. бастап қосатын [a-z]кез келген таңбаны білдіреді және «бір немесе бірнеше» таңбаны білдіреді. Біз «code 2 Java оқу құралын үйрену» жолын береміз делік. Мұны Java-да қалай жасауға болады Алдымен үлгіні жасау керек: az+
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:Класс an objectісі тұрақты өрнектің көрінісін құрайды. Pattern класы ешқандай жалпы конструкторларды қамтамасыз етпейді. Үлгіні жасау үшін алдымен жалпы статикалық әдістердің бірін шақыру керек, содан кейін ол сыныптың нысанын қайтарады Pattern. Бұл әдістер аргумент ретінде тұрақты өрнекті қабылдайды. Matcher Class:Finder нысаны - үлгіні түсіндіретін және енгізу жолында сәйкес әрекеттерді орындайтын қозғалтқыш. PatternКласс сияқты Matcherоның жалпы конструкторлары жоқ. Сіз нысанды сынып нысанындағы Matcherәдісті шақыру арқылы аласыз . Осы қадамдарды орындағаннан кейін, енді бізде сынып данасы бар , енді біз үлгінің табылғанын немесе табылмағанын, егер табылса, қандай позицияда және т.б. Үлгі бүкіл жолға сәйкес келсе true мәнін қайтарады, әйтпесе жалған. Үлгі жолдың басына сәйкес келсе true мәнін қайтарады, әйтпесе жалған. үлгі мәтіннің кез келген бөлігіне сәйкес келсе, true мәнін қайтарады. matcherPatternMatcher m m.matches()m.lookingAt()m.find ()

Сәйкестік табу

Сәтті сәйкестіктен кейін m.start() сәйкес келетін бірінші таңбаның индексін қайтарады және m.end() сәйкес келетін соңғы таңбаның индексін қосады. Сәтсіз әрекет жасалса және сәйкестік табылмаса, m.start()олар m.end()лақтырадыIllegalStateException
  • Бұл RuntimeExceptionоны ұстаудың қажеті жоқ.
Соңғы сәйкестендірілген таңбаның индексін бір плюс қайтару оғаш болып көрінуі мүмкін m.end(), бірақ көпшілігінде дәл солай String.
  • Мысалы,“Now is the time“.substring(m.start(), m.end())
сол жолды қайтарады. Кодты қарастырайық:
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немесе CharBuffer)

Тұрақты өрнек синтаксисі

  • ^Жолдың басына сәйкес келеді.
  • $Жолдың соңына сәйкес келеді.
  • .Жаңа жолдан басқа кез келген жалғыз таңбаға сәйкес келеді. m опциясын пайдалану оны жаңа жолға сәйкестендіруге мүмкіндік береді.
  • [...]Жақшадағы кез келген жалғыз таңбаға сәйкес келеді.
  • [^ ...]Жақшада жоқ кез келген жалғыз таңбаға сәйкес келеді.
  • \AБүкіл жолды бастаңыз.
  • \zБүкіл жолдың соңы.
  • \ZСоңғы жол терминаторынан басқа бүкіл жолдың соңы.
  • re*Алдыңғы өрнектің 0 немесе одан да көп кездесулеріне сәйкес келеді.
  • re+Алдыңғы өрнектің бір немесе бірнеше сәйкестігі.
  • re?Алдыңғы өрнектің орнына 0 немесе 1 сәйкес келеді.
  • re{n}Дәл сәйкес келеді N Алдыңғы өрнектің қайталану саны.
  • re{n,}Алдыңғы өрнектің N немесе одан да көп қайталануларына сәйкес келеді.
  • re{n, m}Алдыңғы өрнектің кемінде n және ең көбі m кездесуіне сәйкес келеді.
  • a|ba немесе 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 әрпінен басталған дәйексөз аяқталады.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION