Тұрақты өрнек - мәтінге қолдануға болатын үлгі түрі (String, Java тілінде). Java кәдімгі өрнектерді сәйкестендіру үшін
java.util.regex бумасын қамтамасыз етеді. Тұрақты өрнектер Perl бағдарламалау тіліне өте ұқсас және оларды үйрену өте оңай. Тұрақты өрнек мәтінге (оның бөлігі) сәйкес келеді немесе сәйкес келмейді. * Егер тұрақты өрнек мәтін бөлігіне сәйкес келсе, біз оны таба аламыз. ** Тұрақты тіркес құрама болса, онда тұрақты тіркестің қай бөлігі мәтіннің қай бөлігіне сәйкес келетінін оңай анықтай аламыз.
Бірінші мысал
« » тұрақты тіркесі
[a-z] +
мәтіндегі барлық кіші әріптерге сәйкес келеді. бастап қосатын
[a-z]
кез келген таңбаны білдіреді және «бір немесе бірнеше» таңбаны білдіреді. Біз «code 2 Java оқу құралын үйрену» жолын береміз делік. Мұны Java-да қалай жасауға болады Алдымен үлгіні жасау керек:
a
z
+
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 мәнін қайтарады.
matcher
Pattern
Matcher 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|b
a немесе 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 әрпінен басталған дәйексөз аяқталады.
GO TO FULL VERSION