A reguláris kifejezések a java
Szabályos kifejezések a Java
A reguláris kifejezés egyfajta sablon, amelyet alkalmazni lehet a szövegben (String, Java). Java biztosít java.util.regex csomag illő reguláris kifejezésekkel. A reguláris kifejezések nagyon hasonlít a Perl programozási nyelv, és nagyon könnyű megtanulni.
A reguláris kifejezések, vagy azt a szöveget (egy része), vagy sem.
* Ha a reguláris kifejezés illeszkedik a része a szöveg, találunk ee.
** Ha a reguláris kifejezés egy összetett, akkor könnyen megtudja, mi része a szabályos kifejezés minden része a szövegnek.
Az első példa
Szabályos kifejezés „[a-z] +” illeszkedik minden strochnyem betűkkel a szövegben.
[A-Z] minden olyan karakter-tól Z-ig és + jelentése „egy vagy több” szimbólumot.
Tegyük fel, hogy mi a kínálat vonal «2-es kód tanulni java bemutató».
Hogyan kell csinálni a Java
Először is, meg kell, hogy egy sablont:
Ezután létre kell hozni egy párosító szöveget, egy üzenetet küld a rendszer:
Megjegyzés:
Sem Pattern Matcher vagy tervezők, hozzuk létre őket a minta osztály módszerek.
Minta osztály: A osztály objektum ábrázolása a reguláris kifejezés. Minta osztály nem nyújt állami konstruktőrök. Ahhoz, hogy hozzon létre egy sablont, akkor először meg kell hívni az egyik public static elemfüggvényei egy tárgy, akkor Pattern osztályban. Ezek a módszerek a reguláris kifejezés érvként.
Matcher Osztály: Object „Seeker” a motor, ami értelmezi a mintát, és elvégzi az összehasonlítást a karakterlánc. Mint a minta osztály, Matcher nem rendelkezik nyilvános konstruktőrök. Kapsz egy Matcher objektum hívja matcher. Minta az osztály objektum.
Miután elvégezte ezeket a lépéseket, és most van egy objektumpéldányt Matcher m. és most már a vizsgálati mintát találtunk-e vagy sem, és ha igen, milyen helyzetben, stb
m.matches () értéke igaz, ha a minta illeszkedik az egész szöveget, egyébként hamis.
m.lookingAt () értéke igaz, ha a sablont megegyezik a felső sorban, és egyébként false.
m.find () értéke igaz, ha a minta illeszkedik bármely részét a szöveget.
Sikeres sopostovleniya, m.start () visszaadja az index az első karakter illeszkedik, és m.end () visszatér az index az utolsó karakter illeszkedik, plusz egy.
Ha sikertelen kísérlet történt, és nincs találat, m.start () és m.end () fog dobni IllegalStateException
- Ez egy RuntimeException, így nem kell kapnunk.
Furcsának tűnhet, hogy m.end () visszatér az index az utolsó karakter illeszkedik, plusz egy, de ez pontosan mire van szükség a legtöbb String osztály módszerek.
- Például, "Itt az idő" .substring (m.start (), m.end ())
visszatér ugyanazt a karaktersorozatot.
Vessen egy pillantást a kódot:
Ha van egy meccs, akkor
- m.replaceFirst (csere) visszaad egy új karakterlánc, amelyben az első részsztring illeszkedik a minta helyébe csere
- m.replaceAll (csere) visszaad egy új karakterlánc, ahol minden részsztring, amely egybeesett a mintát ki kell cserélni
- m.find (StartIndex) található a következő sort, kezdve az index
- m.reset () visszaállítja a sablon
- m.reset (NewText) visszaállítja a kereső, és ad neki egy új szöveget (lehet String, StringBuffer vagy CharBuffer)
Szabályos kifejezésszintaktikai
^ Egyezik a sor elejére.
$ Illeszkedik a sor végére.
. Illeszkedik egy olyan karaktert, kivéve az újsor. Segítségével m opció lehetővé teszi, hogy megfeleljenek az új vonalat.
[. ] Bármely karakterrel zárójelben.
[^. ] Bármely karakterrel nem a zárójelben.
\ A kezdeni egy teljes sort.
\ Z A végén az egész szöveget.
\ Z Vége az összes vonal kivételével az utolsó sor terminátor.
újra * illeszkedik 0 vagy több előfordulása a megelőző kifejezés.
re + Egy vagy több előfordulása a megelőző kifejezés.
újra? Illeszkedik 0 vagy 1 a korábbi modell az expresszió.
újra mérkőzések pontosan N előfordulási száma a megelőző kifejezés.
újra a megfelelő N- vagy több előfordulása a megelőző kifejezés.
újra mérkőzések legalább, n és m a legtöbb előfordulását a megelőző kifejezés.
a | b mérkőzések a vagy b.
(Re) csoport reguláris kifejezések és emlékezve a megtalált szöveget.
(. Re) Csoportok reguláris kifejezések nélkül emlékezve egyező szöveget.
(?> Re) mérkőzések független minta nélkül visszalépés.
\ W felel meg a levelet.
\ W nem alfanumerikus karaktereket.
\ S illeszkedik a tér. Ekvivalensen [\ t \ n \ r \ f].
\ S nem szóközöket.
\ D mérkőzések számjegyek. Ekvivalens a [0-9].
\ D megegyezik egy számjegyet.
\ G mérkőzések pont az utolsó mérkőzés.
\ N mérkőzések egy új sort.
\ B mérkőzések egy szóhatár.
\ B mérkőzések nincsenek szóhatár.
\ N, \ t, stb új sor karaktert, kocsi vissza, fülek, stb
\ Q Idézet az összes karaktert, mielőtt a \ E.
\ E befejezi ajánlat adás kezdődött \ Q.
Uram, kérem, segítsen. Próbálok levelet reguláris kifejezés beszúrni visszavonása után két sor egy másik sor.
Igyekszem, hogy megteremtse a sablon az alábbiak szerint:
Úgy tűnik, nem egészen értem az elvet. Olvastam, olvastam, és valahogy nem késik. Meg kell a saját konkrét példákat foglalkozik. Piszkálni az orrát, kérjük írjon nekem.
Köszönöm.
Írtam a végén, mint ez, de ez némi mankó ...