contents
PersBackup

Personal Backup Version 5.9

© 2001 − 2018, Dr. Jürgen Rathlev

Szintaxisa reguláris kifejezéseknek (Syntax)

Reguláris kifejezések a programban könyvtár és fájlnevek szűrése valamint a kiterjesztések. Fontolja meg a különböző alapértelmezett beállítások:

A felhasználó módosító / i megváltoztathatja ezt a müködést.

Personal Backup 5 végrehajtja a Unicode változattatást TRegExpr.

A reguláris kifejezések szintaxisa írja le a szerző a könyvtárak használata(Andrey V. Sorokin) RegExp Studió. Az alábbiakban Nem elérhető alkalmazás leírása korrigált korrektúrahibákért:

Bevezetés

Reguláris kifejezés széles körben alkalmazott módszer meghatározása minták, szövegek kereséshez. Speciális metakarakterek lehetővé teszik, hogy meghatározza például, hogy egy adott karakterláncot keresen a sor elején vagy a sor végén, vagy tartalmaz n e bizonyos karakter.

Reguláris kifejezések kezdők számára bonyolult, de a valóságban egy nagyon egyszerű (na jó, viszonylag egyszerű), praktikus és hatékony eszköz.

Egyszerű találat

Egyetlen karaktert talál, kivéve, ha a metakarakter speciális jelentést készít alábbiakban ismertet.

Karakterek sorozata megegyezik a karakterek sorozatával, így a minta illeszkedik a célzott szövegben. Elég egyszerű!

Karakterek normálisan működnek, de metakaraktereket vagy escape szekvenciákat szóközöket kell értelmezni a backslash \ escape karaktert. Például a metakarakter ^ talál a szöveg elején egy \ ^ talál karaktert ^ és hasonlóan \ \ találat \ és így tovább.

Példa:
foobar      metakarakter a szövegben foobar
\^FooBarPtr metakarakter a szövegben ^FooBarPtr

Escape szekvenciák

Karaktereknek is adva egy escape szekvencia szintaxis, ugyanúgy, mint amikor használt C és Per, ahol \ n megegyezik egy új sort létrehozására, \ t a lapot, stb Általánosabban \ x nn ahol nn egy string hexadecimális számjegy, megfelel a karakter ASCII értéknek nn .
Ha szükség van széles (Unicode) karakter kódolásra, használhatja \ x { nnnn } , ahol nnnn egy string egy vagy több hexadecimális számjegy.

KódLeírásEgyenértéküség(ekvivalencia)
\xnnKarakter hexadecimális kódja nn\xnn
\x{nnnn}Karakter hexadecimális kódja nnnn (egy byte sima szöveg és két bájt Unikódolás (Unicode))  
\tTabulátor (HT/TAB)\x09
\nSoremelés (LF)\x0a
\rSor vissza (CR)\x0d
\fLapemelés (FF)\x0c
\aRiasztás (csengő) (BEL)\x07
\eSzökés (Escape (ESC))\x1b
Példa:
foo\x20bar megegyezik a szöveg foo bar (megjegyezni a közepén)
\tfoobar   megegyezik a szöveg foobar előre meghatározott fül (tabulátor)

Egyéb karakterek, szükség van az escape karakterre \ a zárójelben () és [] és, mint már említettük, a backslash önmagában \

Karakter osztályok

Megadhat karakterosztályt, mellékelve a fenti karakterekből [] , ami egyezik bármelyik karakterrel a listából.

Ha az első karakter után [ ^ nem illeszkedik minden karakterre a listában.

Példa:
foob[aeiou]r  megtalálja a karakterláncokat foobar, foober, stb. de nem foobbr, foobcr, stb.
foob[^aeiou]r megtalálja a karakterláncokat foobbr, foobcr, stb .de nemfoobar, foober, stb.

Listán belül a - karaktert lehet megadni a tartományban , hogy az reprezentálja az összes karakter között a és z a befogadó.

Ha szeretné, hogy a - karakter legyen tagja egy osztálynak, tegye az elejére vagy a a lista végére, vagy előzze a \ escape karaktert. Ha szeretné, hogy a ] karakter legyen, akkor helyezze az elejére a listában, vagy megelőzze a \ escape karaktert.

Példa:
[-az]     megegyezik a, z és -
[az-]     megegyezika, z és -
[a\-z]    megegyezik a, z és -
[a-z]     megfelel az összes huszonhat kisbetűs karaktereknek, a , z
[\n-\x0D] megegyezik bármelyikre #10, #11, #12, #13
[\d-t]    illeszkedik minden számjegy, - vagy t
[]-a]     illeszkedik bármely char-ból ] , a

Metakarakterek

Metakarakterek speciális karakterek, amelynek a lényege a rendszeres kifejezés. Van különböző típusú metakarakter, az alábbiakban leírtak szerint.

Metakarakterek - vonal elválasztó

kód Leírás
^ A sor elejére
$ sor vége
\ A szöveg eleje
\ Z szöveg vége
. Bármilyen karakter a sorban
Examples:
^foobar   megegyezik a szöveg foobar ez csak a sor elején fordul elő
foobar$  megegyezik a szöveg foobar ez csak a sor végén fordul elő
^foobar$ megegyezik a szöveg foobar csak akkor, ha ez az egyetlen szöveg a sorban
foob.r   megegyező karakterláncok, mint foobar, foobbr, foob1r és így tovább

Alapértelmezésben a ^ metakarakter csak akkor garantált, hogy megfeleljen az elején a bemeneti karakterláncban vagy szövegben, a $ metakarakter csak a végén. A beágyazott sor elválasztó nem egyezik a ^ vagy $ .

Azonban,ha kezelni kívánja a szöveget, mint a multi-line buffert, úgy, hogy ^ metakarakter fog találni, miután minden sor elválasztó a szövegen belül és $ meg fog találni, sor elválasztásban. Megteheti ezt a módosító / m bekapcsolásával.

A \A és \Zolyan mint^ és $, kivéve, hogy nem fognak több tetszőleges alkalommal, amikor a módosító /m amíg használatban van a ^ és$ egyezik minden belső sor leválasztó.

Alapértelmezésben a . metakarakter minden karakterre illeszkedik, de ha váltani akarja módosító / s , akkor a . metakarakter nem egyezik a beágyazott sor elválasztásban.

TRegExpr működő sor elválasztó, ajánlott mint www.unicode.org:

^ elején van egy bemeneti szöveg: ha a módosító /m be van kapcsolva, a bemeneti karakterláncban lesz megtalálható, ha a következő előfordulás jelen van \x0D\x0A or \x0A vagy \x0D.
Ha ön használja az Unicode verzió ból TRegExpr, akkor is, előfordulhat \x2028 vagy \x2029 vagy \x0B vagy \x0C vagy \x85 egyezés.
Megjegyezzük, hogy nincs üres sor szekvencián belül \x0D\x0A.

$ a végén van egy bemeneti szöveg: ha a módosító /m be van kapcsolva, a bemeneti karakterláncban lesz megtalálható, ha előzőleg előfordult\x0D\x0A vagy \x0A vagy \x0D.
Ha ön használja az Unicode verzió ból TRegExpr, akkor is előfordulhat \x2028 vagy \x2029 vagy \x0B vagy \x0C vagy \x85 egyezés.
Megjegyezzük, hogy nincs üres sor szekvencián belül \x0D\x0A.

. bármilyen karakterre megegyező: ha a módosító /s ha ki van kapcsolva, akkor . nem egyezik \x0D\x0A és \x0A és \x0D.
Ha ön használja az Unicode verzió ból TRegExpr, akkor is előfordulhat \x2028 és \x2029 és \x0B és \x0C és \x85 nem egyezés.

Ne feledje, hogy a ^.*$ (egy üres sor minta) nem felel meg az üres karakterlánc szekvencián belül \x0D\x0A, de megegyezik az üres szöveg a szekvenciában \x0A\x0D.

Többsoros feldolgozás könnyen lehet behangolni, hogy megfeleljen a saját célú segítségségnek TRegExpr tulajdonságok Sor elválasztások és Sor Párosított elválasztás. Használhatja Unix stílusú elválasztót \n csak DOS/Windows stílus \r\n csak keverjük őket össze (a fent leírtak szerint, és alapértelmezésben) segítségével megadhatja a külön sor elválasztót!

Metakarakterek - előre definiált osztályok

KódTulajdonságok
\w alfanumerikus karakter (beleértve a"_")
\Wnem alfanumerikus karakter
\dnumerikus karakter (számjegy)
\Dnem numerikus karakter
\sminden szóköz karakter (ugyanaz, mint a [ \t\n\r\f])
\Snem szóköz karakter

Ön használhatja a \w, \d és \s belül az egyéni klasszikus karaktereket.

Példa:
foob\dr     karakterlánc megfelel, mint foob1r, foob6r és így tovább, de nem foobar, foobbr és így tovább
foob[\w\s]r karakterlánc megfelel, mint foobar, foob r, foobbr és így tovább, de nem foob1r, foob=r és így tovább

TRegExpr használja a tulajdonságokat a SpaceChars és WordChars ,hogy meghatározza a karakterosztályokat \w, \W, \s és \S, könnyen.

Metakarakterek - szóhatárokon

Kódtulajdonságok
\bSzóhatár egyezik
\BSzóhatár nem egyezik

szóhatár \ b egy hely két karakter, amely a \ w egyik oldalán, és egy \ W, a másik oldalán is (bármilyen sorrendben), számítva a képzeletbeli karakterek kezdetét és végét a szöveg egyezik \W.

Metakarakterek - iterátorok ( bejárás)

Minden elem szabályos kifejezése követhet egy másik típusú metakaraktert, bejáró . Ezeknek a metakaraktereknek adja meg az előfordulások számát egy korábbi karakter, A metakarakter , vagy egy alkifejezés .

Kódtulajdonságok
*Nulla vagy több ("mohó"), hasonló a {0,}
+Egy vagy több ("mohó"), hasonló a {1,}
?Nulla vagy egy ("mohó"), hasonló a {0,1}
{n}Pontosan n-szer ("mohó")
{n,}Legalább n-szer ("mohó")
{n,m}Legalább n de legfeljebb m-szer ("mohó")
*?Nulla vagy több ("nem-mohó"), hasonló a {0,}?
+?Egy vagy több ("nem-mohó"), hasonló a {1,}?
??Nulla vagy több ("nem-mohó"), hasonló a {0,1}?
{n}?Pontosan n -szer ("nem-mohó")
{n,}?Legalább n -szer("nem-mohó")
{n,m}?de nem több, mint Legalább n -szer m -szer ("nem-mohó")

Ezért a számjegyeket zárójelek formájában { n, m } adja meg a minimálisan n és a maximálisan m kiegyenlített. Az űrlap { n } ekvivalens { n, n } és pontosan megegyezik n alkalommal. Az űrlap {n,} illeszkedik n vagy több alkalommal. Nincs korlátozva, hogy mekkora n vagy m , de nagy számban fogyaszt több memóriát , és lassítják a végrehajtását reguláris kifejezéseknek.

Ha a zárójel előfordul más összefüggésben, úgy kell tekinteni, mint a hagyományos karaktert.

Példa:
foob.*r     karakterlánc megfelel, mint foobar, foobalkjdflkj9r és foobr
foob.+r     karakterlánc megfelel, mint foobar, foobalkjdflkj9r de nem foobr
foob.?r     karakterlánc megfelel, mint foobar, foobbr és foobr but not foobalkj9r
fooba{2}r   egyező a szöveg foobaar
fooba{2,}r  karakterlánc megfelel, mint foobaar, foobaaar, foobaaaar stb.
fooba{2,3}r karakterlánc megfelel, mint foobaar, vagy foobaaar de nem foobaaaar

Egy kis magyarázat a "mohóság": "mohó" minél több találat, "nem mohó" néhány lehetséges találat.
Például, amikor alkalmazzák a szövegben a abbbbc:
b+ és b* visszatérő bbbb
b+? visszatérők b
b*? üres karakterláncot ad vissza
b{2,3}? visszatérők bb
b{2,3} visszatérők bbb

Meg lehet váltani az összes iterátorokat a "nem mohó" módban a módosít /g.

Metakarakterek - alternatívák

megadhat egy sor alternatívát a minta segítségével | szétválasztani őket, hogy díj | fi | ellenség egyezik meg díj , FIE , vagy ellenség a cél szöveget, mint ahogy f (e | i | o) e .

Az első alternatíva mindent tartalmaz az utolsó minta elválasztáskor (, [, vagy az elején a minta legfeljebb az első |, míg az utolsó alternatíva tartalmaz mindent, | a következő minta határoló. Emiatt ez a szokásos gyakorlat, hogy tartalmazza a zárójelben az alternatívákat, hogy minimalizálja a sor elejét és végét, ne legyen ütközés a sor eleje és vége között.

Megpróbálhat balról jobbra, így az első alternatíva található amelyek az egész kifejezésre megegyezik, amit választott. Ez azt jelenti, hogy az alternatívák nem a feltétlenül mohó. Például: ha a megfelelő (foo | láb) szemben mezítláb , csak a foo rész felel, mint a első alternatíva kipróbált és sikeresen megfelel a szövegben, ez lehet, hogy nem tűnik fontosnak, de fontos lesz, ha egyezés van a szöveg zárójelben.

Also remember that | is interpreted as a literal within square brackets, so if you write [fee|fie|foe] you are really only matching [feio|].

Példa:
foo(bar|foo) matches the strings foobar or foofoo

Metakarakterek - alkifejezések

sorozat konstrukciót (...) is lehet használni, hogy meghatározza a reguláris kifejezéseket, hogy külön-külön egyezik. Az elemzés után megtalálható alkifejezést pozíciókat, hosszúságú és pillanatnyi értékeket MatchPos, MatchLen és Match tulajdonságait TRegExpr és helyettesítse ezeket átmeneti karakterek segítségével TRegExpr . Helyettesítő .

Alkifejezésnek vannak számozva balról jobbra haladva a kezdő zárójelel.

Az első alkifejezés száma 1 (a teljes reguláris kifejezések száma 0 - helyettesítheti ezt az irányelvet felváltó <R> írás $0 vagy $&).

Példa:
(foobar){8,10}  megegyező karakterláncok amelyek 8, 9 vagy 10 esetben a foobar
foob([0-9]|a+)r egyezés foob0r, foob1r, foobar, foobaar, foobaar stb.

Metakarakterek - Visszautalás

Metakarakterek \1 segítségével \9 értelmezi visszautalást; \<n> megegyezik a korábban egyező alkifejezéssel #<n>.

Példa:
(.)\1+          egyezés aaaa és cc
(.+)\1+         szintén egyezik abab és 123123
(['"]?)(\d+)\1 egyezés "13" (idézőjelek), '4' (aposztrófot (gondolatjelek)), vagy 77 (idézőjelek nélkül), stb.

Módosítók

Módosítók megváltoztatása TRegExpr .

Nagyon sok módja van a módosítás létrehozására. Bármely módosítás lehet beágyazva a reguláris kifejezés mint a (? ...) konstrukció.

Hozzárendelheti azokat a megfelelő TRegExpr tulajdonságokat ( például változtatni a módosítást / x , vagy ModifierStr változtatnak összes módosítót együtt). Az alapértelmezett értékek az új esetekben TRegExpr objektumok meghatározása globális változók , mint például a globális változó RegExprModifierX határozza meg az értékét ModifierX egy új TRegExpr .

i

nagybetű-független minta megfelelő (használható, ha telepítve a rendszer helyi beállítások). Lásd még InvertCase .

m

Kezeljük a karakterláncot több sorban. Azaz, a változás ^ és $ a hozzátartozó csak a legelején, vagy a végén a szövegnek, hogy megfelelő az elején vagy a végén minden sorban bárhol a szövegben. lásd tovább sor elválasztó .

s

Kezeljük a karakterláncot egy sorban. Azaz, a változás . , hogy megfeleljen bármilyen karakter egyáltalán, még egy sor elválasztásban (lásd még a sor elválasztó ), amelyek általában nem egyeznek.

g

A nem szabványos módosító. Alapértelmezésben ez a módosító be van kapcsolva. Kapcsolja ki minden további operátornak a nem mohó módot. Ebben az esetben a + dolgozik +? * *? és így tovább

x

kiterjesztés olvashatóság a minta által lehetővé téve szóközzel és megjegyzésekkel (magyarázatát lásd alább).

r

Nem szabványos módosítót. A viselkedése attól függ, hogy TRegExpr támogatja a Unikódot-e vagy sem.
Personal Backup használja Unikód változatot , ezért ha ez a módosító be van állítva, a tartomány а-я tartalmazza ё, А-Я tartalmazzaЁ és А-я minden orosz karaktert.

Megjegyzés: Az egyszerű szöveges változat a Windows-1251 kód táblázatban (nem ISO-8859-5), így a tartomány à-ÿ (= 0xE0..0xFF) includes ¸ (= 0xB8), À-ß (= 0xC0..0xDF) includes ¨ (= 0xA8) és à-ß (= 0xC0..0xFF) tartalmaz minden orosz szimbólumot.

Ellentétben az eredeti változattal TRegExpr , a Personal Backup ez módosító alapértelmezés szerint nincs megadva .

A módosító (? x) maga, szüksége van egy kicsit több magyarázatra. Azt mondja TRegExpr , hogy hagyja figyelmen kívül a whitespace karakter, amely nem backslash sem egy karakterosztály. Használhatja ezt megszakítani a reguláris kifejezés a (valamivel) olvashatóbb szövegben. A # karakter is kezeli, mint egy metakarakter bevezetése Megjegyzés, például:

Példa:
( (abc) # megjegyzés
  |     # Használhatja szóközt formázásához a reguláris kifejezések - TRegExpr figyelmen kívül hagyják őket
  (efg) # megjegyzés 2 )

Ez azt is jelenti, hogy ha szeretné, hogy az igazi whitespace vagy # karakter minta (kívül karakterosztály, ahol nem befolyásolja / x), akkor használjon escape karaktert az oktális vagy hexadecimális escape karakterek helyett. Mindent összevetve, ezek a funkciók jó úton haladnak afelé, hogy a reguláris kifejezés szöveget olvashatóbbá tegye.

Példák:
(?i)Saint-Petersburg       egyezés Saint-petersburg és Saint-Petersburg
(?i)Saint-(?-i)Petersburg  egyezés Saint-Petersburg, de nem Saint-petersburg
(?i)(Saint-)?Petersburg    egyezés Saint-petersburg és saint-petersburg
((?i)Saint-)?Petersburg    egyezés saint-Petersburg, de nem saint-petersburg

vegyes

(?#text)

megjegyzés, a szöveget figyelmen kívül hagyja. Ne feledje, hogy TRegExpr bezárja a megjegyzést amint látja a karaktert ) , így nincs módja annak, hogy a literális karakterként) megjegyezze.


2018, Január, Németország, Schwentinental 24222, Dr.Jürgen Rathlev (Magyar fordítás: Robert Kovacs)