Kort for regelmæssigt udtryk er en regex en tekststreng, der giver dig mulighed for at oprette mønstre, der hjælper med at matche, lokalisere og styre tekst. Perl er et godt eksempel på et programmeringssprog, der bruger regulære udtryk. Men det er kun et af de mange steder, du kan finde regulære udtryk. Regelmæssige udtryk kan også bruges fra kommandolinjen og i tekstredigerere til at finde tekst i en fil.
Når man først forsøger at forstå regulære udtryk, ser det ud som om det er et andet sprog. Imidlertid kan mastering af regulære udtryk spare dig for tusindvis af timer, hvis du arbejder med tekst eller skal analysere store mængder data. Nedenfor er et eksempel på et regulært udtryk med hver af dets komponenter mærket. Dette regulære udtryk vises også i Perl programmeringseksemplerne vist senere på denne side.

Grundlæggende om regulære udtryk (snydeark)
Kig på ovenstående eksempel kan være overvældende. Når du først forstår den grundlæggende syntaks af, hvordan regulære udtryk fungerer, kan du læse ovenstående eksempel, som om du læser denne sætning. Desværre bruger ikke alle programmer, kommandoer og programmeringssprog samme regulære udtryk, men alle deler ligheder.
Karakter | Hvad gør den? | Eksempel | Tændstikker |
---|---|---|---|
^ | Matcher begyndelsen af linjen | ^ abc | abc, abcdef .., abc123 |
$ | Matcher slutningen af linjen | abc $ | min: abc, 123abc, theabc |
. | Match enhver karakter | ac | abc, asg, a2c |
| | OR operatør | abc | xyz | abc eller xyz |
(...) | Capture alt matchet | (A) b (c) | Fanger 'a' og 'c' |
(:? ...) | Ikke-indfangende gruppe | (A) b (:? C) | Fanger 'a', men kun grupper 'c' |
[...] | Matcher alt i parentes | [Abc] | a, b eller c |
[^ ...] | Matcher alt, hvad der ikke er indeholdt i parentes | [^ Abc] | xyz, 123, 1de |
[Az] | Matcher alle tegn mellem 'a' og 'z' | [Bz] | bc, sind xyz |
{x} | Den nøjagtige "x" antal gange, der skal matche | (Abc) {2} | ABCABC |
{x, } | Match 'x' antal gange eller mere | (Abc) {2, } | abcabc, abcabcabc |
{X, y} | Match mellem 'x' og 'y' gange. | (A) {2, 4} | aa, aaa, aaaaa |
* | Grådige kamp, der matcher alt i stedet for * | b * c | abc, abbcc, abcdc |
+ | Matcher tegn før + en eller flere gange | a + c | ac, aac, aaac, |
? | Passer tegnet før? nul eller en gang. Bruges også som en ikke-grådig kamp | ab? c | ac, abc |
\ | Undslippe karakteren efter tilbageslag eller skabe en flugtsekvens. | en \ sc | ac |
Escape-tegn (escape-sekvens)
Bemærk: Escape-tegn er store og små bogstaver.
Karakter | Hvad gør den? |
---|---|
\ | Et hvilket som helst tegn, der ikke er nævnt nedenfor, forud for en \ vil blive undslapet. For eksempel, \. matcher en periode og udfører ikke ovennævnte funktion. Tegn, der skal undslippes, er () [] {} ^ $. | * +? \ |
\ 0 | Null karakter |
\en | Match en klokke eller alarm. |
\ b | Ord grænsen i de fleste eller backspace |
\ B | Ikke ord grænse |
\ d | Match et decimaltal (0-9) |
\ D | Match enhver ikke-ciffer |
\ e | Match en flugt |
\ f | Match et formularfeed |
\ n | Match en ny linje |
\ Q ... \ E | Ignorerer enhver særlig betydning i, hvad der matches. |
\ r | Match en vognretur |
\ s | Matcher et mellemrum (mellemrum, \ t, \ r, \ n) |
\ S | Passer til et ikke-hvidt rumtegn |
\ t | Match en fane |
\ v | Match en lodret fane |
\ w | Matcher et ordord [a-zA-Z_0-9] |
\ W | Matcher et enkelt ordtype |
Regelmæssige udtryk flag
Uden for det regulære udtryk (i slutningen) kan flagene bruges til at hjælpe med mønstervillingen.
Karakter | Hvad gør den? |
---|---|
jeg | Ignorer sagen (høj og mellemstor) |
m | Multi-line match |
s | Match nye linjer |
x | Tillad mellemrum og kommentarer |
J | Duplicate gruppe navne tilladt |
U | Ungreedy match |
Perl programmeringssprog regulære ekspression eksempler
Nedenfor er et par eksempler på regulære udtryk og mønster matching i Perl. Mange af disse eksempler er ens eller de samme til andre programmeringssprog og programmer, der understøtter regulære udtryk.
$ data = ~ s / dårlig data / gode data / i;
Ovennævnte eksempel erstatter eventuelle "dårlige data" med "gode data" ved hjælp af en case-sensitive kamp. Så hvis $ data variablen var "Her er dårlige data" ville det blive "Her er gode data".
$ data = ~ s / a / a /;
Dette eksempel erstatter enhver lille bogstaver a med en stor bogstav A. Så hvis $ data var "eksempel" ville det blive "exAmple".
$ data = ~ s / [az] / * /;
Ovennævnte eksempel erstatter ethvert lille bogstav, a gennem z, med en stjerne. Så hvis $ data var "Eksempel", ville det blive "E ******".
$ data = ~ s / e $ / es /;
Dette eksempel bruger $ tegnet, som fortæller det regulære udtryk at matche teksten før det i slutningen af strengen. Så hvis $ data var "eksempel" ville det blive "eksempler".
$ data = ~ s / \ ./ !/;
I ovenstående eksempel erstatter vi en periode med et udråbstegn. Fordi perioden er et meta-tegn, hvis du kun indtaster en periode uden \ (escape), behandles den som et tegn. I dette eksempel, hvis $ data var "eksempel". det ville blive "eksempel!", men hvis du ikke havde flugten, ville det erstatte alle tegn og blive "!!!!!!!!"
$ data = ~ s / ^ e / E /;
Endelig fortæller caret (^) i det ovenstående eksempel det regulære udtryk at matche noget i starten af linjen. I dette eksempel vil dette matche enhver lille bogstaver e i begyndelsen af linjen og erstatte den med en hovedstol E. Derfor ville $ $ "eksempel" blive "eksempel".
Tip: Hvis du vil udforske regulære udtryk endnu mere i kommandoer som grep eller regulære udtryk i programmeringssprog, kan du se O'Reilly-bogen "Mastering regular expressions."
Computer akronymer, Escape sekvens, Udtryk, Glob, Meta-karakter, Programmeringsbetingelser, Tilde, Wildcard