logo

Reguliere expressie (RegEx) in Python met voorbeelden

A Reguliere expressie of RegEx is een speciale reeks tekens die een zoekpatroon gebruikt om een ​​tekenreeks of reeks tekenreeksen te vinden.

Het kan de aan- of afwezigheid van een tekst detecteren door deze te matchen met een bepaald patroon en kan een patroon ook opsplitsen in een of meer subpatronen.



Regex-module in Python

Python heeft een ingebouwde module met de naam met betrekking tot dat wordt gebruikt voor reguliere expressies in Python. We kunnen deze module importeren met behulp van de import-instructie .

Voorbeeld: Importeren van re-module in Python

Python3








# importing re module> import> re>

>

>

Hoe RegEx in Python te gebruiken?

U kunt RegEx in Python gebruiken na het importeren van de re-module.

Voorbeeld:

Deze Python-code gebruikt reguliere expressies om naar het woord te zoeken portaal in de gegeven string en drukt vervolgens de begin- en eindindexen af ​​van het overeenkomende woord binnen de string.

Python3




import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())>

>

>

Uitvoer

Start Index: 34 End Index: 40>

Opmerking: Hier staat r-teken (r’portal’) voor raw, niet voor regex. De onbewerkte string verschilt enigszins van een gewone string; hij interpreteert het -teken niet als een escape-teken. Dit komt omdat de engine voor reguliere expressies karakter gebruikt voor zijn eigen ontsnappingsdoel.

Voordat we beginnen met de Python regex-module, laten we eens kijken hoe we daadwerkelijk regex kunnen schrijven met behulp van metatekens of speciale reeksen.

Metakarakters

Metakarakters zijn de karakters met een speciale betekenis.

Om de RE-analogie te begrijpen, zijn metakarakters nuttig en belangrijk. Ze zullen worden gebruikt in functies van module re. Hieronder vindt u de lijst met metatekens.

Metakarakters

Beschrijving

Wordt gebruikt om de speciale betekenis van het karakter dat erop volgt te laten vallen

jknop

[]

Vertegenwoordig een karakterklasse

^

Komt overeen met het begin

$

Komt overeen met het einde

.

Komt overeen met elk teken behalve nieuwe regel

|

Betekent OR (komt overeen met een van de tekens die erdoor gescheiden zijn.

?

Komt overeen met nul of één exemplaar

*

Een willekeurig aantal keren dat het voorkomt (inclusief 0 keer dat het voorkomt)

+

Een of meer gebeurtenissen

{}

Geef het aantal keren aan dat een voorgaande regex moet overeenkomen.

()

Omsluit een groep Regex

Laten we elk van deze metatekens in detail bespreken:

1. – Backslash

De backslash () zorgt ervoor dat het teken niet op een speciale manier wordt behandeld. Dit kan worden beschouwd als een manier om aan metakarakters te ontsnappen.

Als u bijvoorbeeld naar de punt(.) in de tekenreeks wilt zoeken, zult u merken dat punt(.) als een speciaal teken wordt behandeld, net als een van de metatekens (zoals weergegeven in de bovenstaande tabel). In dit geval gebruiken we dus de backslash() net vóór de punt(.), zodat deze zijn specialiteit verliest. Zie het onderstaande voorbeeld voor een beter begrip.

Voorbeeld:

De eerste zoektocht ( re.search(r'.', s)> ) komt overeen met elk teken, niet alleen de punt, terwijl de tweede zoekopdracht ( re.search(r'.', s)> ) zoekt specifiek naar en matcht het periodekarakter.

Python3




import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)>

>

>

Uitvoer

>

2. [] – Vierkante haakjes

Vierkante haakjes ([]) vertegenwoordigen een tekenklasse die bestaat uit een reeks tekens die we willen matchen. De tekenklasse [abc] komt bijvoorbeeld overeen met elke afzonderlijke a, b of c.

We kunnen ook een reeks tekens opgeven met behulp van – binnen de vierkante haakjes. Bijvoorbeeld,

  • [0, 3] is een voorbeeld als [0123]
  • [a-c] is hetzelfde als [abc]

We kunnen de karakterklasse ook omkeren met behulp van het caret(^)-symbool. Bijvoorbeeld,

  • [^0-3] betekent elk getal behalve 0, 1, 2 of 3
  • [^a-c] betekent elk teken behalve a, b of c

Voorbeeld:

In deze code gebruik je reguliere expressies om alle tekens in de string te vinden die binnen het bereik van ‘a’ tot ‘m’ vallen. De re.findall()> functie retourneert een lijst met al dergelijke tekens. In de gegeven string zijn de karakters die overeenkomen met dit patroon: 'c', 'k', 'b', 'f', 'j', 'e', ​​'h', 'l', 'd', ' G'.

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)>

>

>

Uitvoer

['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>

3. ^ - Caret

Het caret-symbool (^) komt overeen met het begin van de string, d.w.z. controleert of de string begint met het/de gegeven teken(s) of niet. Bijvoorbeeld -

  • ^g controleert of de string begint met g, zoals geeks, globe, girl, g, etc.
  • ^ge controleert of de string begint met ge, zoals geeks, geeksforgeeks, enz.

Voorbeeld:

Deze code gebruikt reguliere expressies om te controleren of een lijst met tekenreeksen begint De . Als een string begint met Het is gemarkeerd als Matched anders wordt het gelabeld als Niet geëvenaard.

Python3




import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)>

>

>

Uitvoer

Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>

4. $ – dollar

Het dollar($)-symbool komt overeen met het einde van de string, d.w.z. controleert of de string eindigt met het/de gegeven teken(s) of niet. Bijvoorbeeld-

  • s$ zal controleren op de string die eindigt met een zoals geeks, Ends, s, etc.
  • ks$ zal controleren op de string die eindigt met ks, zoals geeks, geeksforgeeks, ks, etc.

Voorbeeld:

Deze code gebruikt een reguliere expressie om te controleren of de tekenreeks eindigt met Wereld!. Als er een overeenkomst wordt gevonden, wordt deze afgedrukt Overeenkomst gevonden! anders wordt het afgedrukt Overeenkomst niet gevonden .

Python3




import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Uitvoer

Match found!>

5. . – Punt

Het punt(.)-symbool komt overeen met slechts één teken, behalve het teken voor de nieuwe regel ( ). Bijvoorbeeld -

  • a.b zal controleren of er een tekenreeks is die een teken bevat op de plaats van de punt, zoals acb, acbd, abbb, enz.
  • .. controleert of de string minimaal 2 tekens bevat

Voorbeeld:

Deze code gebruikt een reguliere expressie om naar het patroon te zoeken bruine.vos binnen de string. De punt (.>) in het patroon vertegenwoordigt elk teken. Als er een overeenkomst wordt gevonden, wordt deze afgedrukt Overeenkomst gevonden! anders wordt het afgedrukt Overeenkomst niet gevonden .

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

leeuw vergeleken met een tijger

>

Uitvoer

Match found!>

6. | - Of

Het Or-symbool werkt als de operator of, wat betekent dat het controleert of het patroon voor of na het symbool of aanwezig is in de string of niet. Bijvoorbeeld -

  • a|b komt overeen met elke tekenreeks die a of b bevat, zoals acd, bcd, abcd, enz.

7. ? - Vraagteken

Het vraagteken (?) is een kwantor in reguliere expressies die aangeeft dat het voorgaande element nul of één keer moet overeenkomen. Hiermee kunt u opgeven dat het element optioneel is, wat betekent dat het eenmalig of helemaal niet kan voorkomen. Bijvoorbeeld,

  • ab?c wordt gematcht voor de string ac, acb, dabc maar wordt niet gematcht voor abbc omdat er twee b zijn. Op dezelfde manier zal het niet worden aangepast voor abdc omdat b niet wordt gevolgd door c.

8.* – Ster

Het stersymbool (*) komt overeen met nul of meer exemplaren van de regex die voorafgaat aan het *-symbool. Bijvoorbeeld -

  • ab*c zal overeenkomen met de string ac, abc, abbbc, dabc, etc. maar zal niet overeenkomen met abdc omdat b niet wordt gevolgd door c.

9. + – Plus

Het plusteken (+) komt overeen met een of meer exemplaren van de regex die voorafgaat aan het +-symbool. Bijvoorbeeld -

  • ab+c wordt gematcht voor de string abc, abbc, dabc, maar wordt niet gematcht voor ac, abdc, omdat er geen b in ac zit en b, wordt niet gevolgd door c in abdc.

10. {m, n} – Bretels

Accolades komen overeen met alle herhalingen die voorafgaan aan de regex van m tot en met n, beide inclusief. Bijvoorbeeld -

  • a{2, 4} wordt gematcht voor de string aaab, baaaac, gaad, maar wordt niet gematcht voor strings als abc, bc omdat er in beide gevallen slechts één a of geen a is.

11. () – Groep

Het groepssymbool wordt gebruikt om subpatronen te groeperen. Bijvoorbeeld -

  • (a|b)cd komt overeen met strings als acd, abcd, gacd, etc.

Speciale reeksen

Speciale reeksen komen niet overeen met het daadwerkelijke teken in de tekenreeks, maar vertellen de specifieke locatie in de zoekreeks waar de overeenkomst moet plaatsvinden. Het maakt het gemakkelijker om veelgebruikte patronen te schrijven.

Lijst met speciale reeksen

Speciale volgorde

Beschrijving

Voorbeelden

A

Komt overeen als de string begint met het opgegeven teken

Afor

voor nerds

voor de wereld

B

Komt overeen als het woord begint of eindigt met het opgegeven teken. (string) controleert het begin van het woord en (string) controleert het einde van het woord.

ge

nerds

krijgen

B

Het is het tegenovergestelde van de , d.w.z. de string mag niet beginnen of eindigen met de gegeven regex.

Bge

samen

smederij

D

Komt overeen met elk decimaalcijfer, dit komt overeen met de ingestelde klasse [0-9]

D

123

goh1

D

Komt overeen met elk niet-cijferig teken, dit is gelijk aan de ingestelde klasse [^0-9]

D

nerds

nerd1

S

Komt overeen met elk witruimteteken.

S

goh ks

een bc een

S

Komt overeen met elk teken dat geen witruimte bevat

S

een bd

abcd

In

Komt overeen met elk alfanumeriek teken, dit is gelijk aan de klasse [a-zA-Z0-9_].

In

123

geeKs4

IN

Komt overeen met elk niet-alfanumeriek teken.

IN

>$

geven

MET

Komt overeen als de tekenreeks eindigt met de opgegeven regex

ab

abcdab

bababab

RegEx-functies

met betrekking tot module bevat er veel functies die ons helpen een string te zoeken naar een match.

Laten we eens kijken naar de verschillende functies die deze module biedt om met regex in Python te werken.

Functie Beschrijving
opnieuw vinden() vindt en retourneert alle overeenkomende exemplaren in een lijst
opnieuw compileren() Reguliere expressies worden gecompileerd in patroonobjecten
re.split() Splits de tekenreeks op basis van het voorkomen van een teken of patroon.
re.sub() Vervangt alle exemplaren van een teken of patroon door een vervangende tekenreeks.
opnieuw ontsnappen() Ontsnapt aan speciaal karakter
onderzoek() Zoekt naar de eerste keer dat een teken of patroon voorkomt

Laten we de werking van deze RegEx-functies bekijken met definitie en voorbeelden:

1. opnieuw vinden()

Retourneert alle niet-overlappende patroonovereenkomsten in string, als een lijst met strings. De tekenreeks wordt van links naar rechts gescand en overeenkomsten worden geretourneerd in de gevonden volgorde.

Alle exemplaren van een patroon zoeken

Deze code maakt gebruik van een reguliere expressie ( d+> ) om alle reeksen van een of meer cijfers in de gegeven string te vinden. Het zoekt naar numerieke waarden en slaat deze op in een lijst. In dit voorbeeld worden de cijfers gevonden en afgedrukt 123456789 En 987654321 uit de invoerreeks.

Python3




import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

>

Uitvoer

['123456789', '987654321']>

2. opnieuw compileren()

Reguliere expressies worden gecompileerd tot patroonobjecten, die methoden hebben voor verschillende bewerkingen, zoals het zoeken naar patroonovereenkomsten of het uitvoeren van tekenreeksvervangingen.

Voorbeeld 1:

De code maakt gebruik van een reguliere-expressiepatroon [a-e]> om alle kleine letters van ‘a’ tot ‘e’ in de invoerreeks te vinden en weer te geven Ja, zei meneer Gibenson Stark. De uitvoer zal zijn ['e', 'a', 'd', 'b', 'e']> , wat de overeenkomende karakters zijn.

Python




alfabet in cijfers
import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))>

>

>

Uitvoer

['e', 'a', 'd', 'b', 'e', 'a']>

De uitvoer begrijpen:

  • Het eerste exemplaar is ‘e’ in Aye en niet ‘A’, omdat dit hoofdlettergevoelig is.
  • Het volgende voorkomen is ‘a’ in gezegd, dan ‘d’ in gezegd, gevolgd door ‘b’ en ‘e’ in Gibenson, de laatste ‘a’ komt overeen met Stark.
  • Metakarakter backslash ‘’ speelt een zeer belangrijke rol omdat het verschillende reeksen signaleert. Als de backslash moet worden gebruikt zonder de speciale betekenis ervan als metateken, gebruik dan ‘’

Voorbeeld 2: Set class [s,.] komt overeen met elk witruimteteken, ‘,’ of ‘.’ .

De code gebruikt reguliere expressies om alle afzonderlijke cijfers en reeksen cijfers in de gegeven invoerreeksen te vinden en weer te geven. Het vindt enkele cijfers met d> en reeksen cijfers met d+> .

Python




import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))>

>

>

Uitvoer

['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>

Voorbeeld 3:

De code gebruikt reguliere expressies om woordtekens, reeksen woordtekens en niet-woordtekens in invoerreeksen te vinden en weer te geven. Het biedt lijsten met de overeenkomende tekens of reeksen.

Python




import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))>

>

>

Uitvoer

['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>

Voorbeeld 4:

De code gebruikt het reguliere expressiepatroon ‘ab*’ om alle exemplaren van ‘ab’ te vinden en weer te geven, gevolgd door nul of meer ‘b’-tekens in de invoerreeks abbaabbb. Het retourneert de volgende lijst met overeenkomsten: ['ab', 'abb', 'abbb'].

Python




import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))>

>

computer netwerken

>

Uitvoer

['ab', 'abb', 'a', 'abbb']>

De uitvoer begrijpen:

  • Onze RE is ab*, waarbij ‘a’ vergezeld gaat van een nee. van ‘b’s, beginnend bij 0.
  • Uitvoer ‘ab’ is geldig vanwege enkele ‘a’ vergezeld van enkele ‘b’.
  • Uitvoer ‘abb’ is geldig vanwege enkele ‘a’ vergezeld van 2 ‘b’.
  • Uitvoer ‘a’ is geldig vanwege enkele ‘a’ vergezeld van 0 ‘b’.
  • Uitvoer ‘abbb’ is geldig vanwege enkele ‘a’ vergezeld van 3 ‘b’.

3. re.split()

Splits de tekenreeks op basis van het voorkomen van een teken of patroon. Wanneer u dat patroon vindt, worden de resterende tekens uit de tekenreeks geretourneerd als onderdeel van de resulterende lijst.

Syntaxis:

re.split(pattern, string, maxsplit=0, flags=0)>

De eerste parameter, patroon, geeft de reguliere expressie aan, string is de gegeven tekenreeks waarin naar het patroon zal worden gezocht en waarin splitsing plaatsvindt. maxsplit, indien niet opgegeven, wordt beschouwd als nul '0', en als een waarde die niet nul is, wordt opgegeven. hooguit dat er veel splitsingen optreden. Als maxsplit = 1, dan wordt de string slechts één keer gesplitst, wat resulteert in een lijst met lengte 2. De vlaggen zijn erg handig en kunnen helpen om de code in te korten, het zijn geen noodzakelijke parameters, bijvoorbeeld: flags = re.IGNORECASE, in deze splitsing , de hoofdletter, d.w.z. de kleine letter of de hoofdletter, wordt genegeerd.

Voorbeeld 1:

Splitst een tekenreeks met behulp van niet-woordtekens en spaties als scheidingstekens, waardoor woorden worden geretourneerd: ['Words', 'words', 'Words']> . Beschouwt apostrofs als niet-woordtekens: ['Word', 's', 'words', 'Words']> . Splitsingen met behulp van niet-woordtekens en cijfers: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Splitst met cijfers als scheidingsteken: ['On ', 'th Jan ', ', at ', ':', ' AM']> .

Python




from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))>

>

>

Uitvoer

['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>

Voorbeeld 2:

De eerste instructie splitst de tekenreeks bij de eerste keer dat een of meer cijfers voorkomen: ['On ', 'th Jan 2016, at 11:02 AM']> . tweede splitst de string met kleine letters a tot en met f als scheidingstekens, niet hoofdlettergevoelig: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Ten derde wordt de tekenreeks gesplitst met kleine letters a tot en met f als scheidingstekens, hoofdlettergevoelig: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

Python




import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))>

>

>

Uitvoer

['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>

4. re.sub()

De 'sub' in de functie staat voor SubString, er wordt gezocht naar een bepaald reguliere-expressiepatroon in de gegeven string (3e parameter), en bij het vinden van het substring-patroon wordt het vervangen door repl (2e parameter), wordt het aantal keren gecontroleerd en bijgehouden dit gebeurt.

Syntaxis:

 re.sub(pattern, repl, string, count=0, flags=0)>

Voorbeeld 1:

  • De eerste verklaring vervangt alle exemplaren van ‘ub’ door ‘~*’ (niet hoofdlettergevoelig): 'S~*ject has ~*er booked already'> .
  • De tweede verklaring vervangt alle exemplaren van ‘ub’ door ‘~*’ (hoofdlettergevoelig): 'S~*ject has Uber booked already'> .
  • De derde verklaring vervangt de eerste keer dat ‘ub’ voorkomt door ‘~*’ (niet hoofdlettergevoelig): 'S~*ject has Uber booked already'> .
  • Ten vierde vervangt ‘AND’ door ‘ & ‘ (niet hoofdlettergevoelig): 'Baked Beans & Spam'> .

Python




import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))>

>

>

Uitvoer

S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>

5. re.subn()

subn() is in alle opzichten vergelijkbaar met sub(), behalve wat betreft de manier waarop het output levert. Het retourneert een tupel met een telling van het totaal van de vervangingen en de nieuwe string in plaats van alleen de string.

Syntaxis:

 re.subn(pattern, repl, string, count=0, flags=0)>

Voorbeeld:

re.subn()> vervangt alle exemplaren van een patroon in een string en retourneert een tuple met de gewijzigde string en het aantal uitgevoerde vervangingen. Het is nuttig voor zowel hoofdlettergevoelige als hoofdletterongevoelige vervangingen.

Python




import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])>

>

>

Uitvoer

('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already>

6. opnieuw ontsnappen()

Retourneert een tekenreeks waarbij alle niet-alfanumerieke tekens een backslash hebben. Dit is handig als u een willekeurige letterlijke tekenreeks wilt matchen die mogelijk metatekens voor reguliere expressies bevat.

Syntaxis:

re.escape(string)>

Voorbeeld:

re.escape()> wordt gebruikt om speciale tekens in een string te escapen, waardoor het veilig is om als patroon in reguliere expressies te worden gebruikt. Het zorgt ervoor dat alle tekens met een speciale betekenis in reguliere expressies als letterlijke tekens worden behandeld.

Python




import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))>

>

>

Uitvoer

This is Awesome even 1 AM I Asked what is this [a-9], he said   ^WoW>

7. onderzoek()

Deze methode retourneert Geen (als het patroon niet overeenkomt), of een re.MatchObject bevat informatie over het overeenkomende deel van de tekenreeks. Deze methode stopt na de eerste overeenkomst, dus deze is het meest geschikt voor het testen van een reguliere expressie in plaats van voor het extraheren van gegevens.

Voorbeeld: Zoeken naar een exemplaar van het patroon

Deze code gebruikt een reguliere expressie om naar een patroon in de opgegeven string te zoeken. Als er een overeenkomst wordt gevonden, worden de overeenkomende delen van de string geëxtraheerd en afgedrukt.

In dit specifieke voorbeeld zoekt het naar een patroon dat bestaat uit een maand (letters) gevolgd door een dag (cijfers) in de invoerreeks Ik ben geboren op 24 juni. Als er een match wordt gevonden, wordt de volledige match afgedrukt, de maand , en de dag.

Python3




import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)>

sorteer een arraylist in Java
>

>

Uitvoer

Match at index 14, 21 Full match: June 24 Month: June Day: 24>

SETS

A Set is een reeks tekens tussen haakjes ‘[]’. Sets worden gebruikt om één enkel teken te matchen in de reeks tekens die tussen haakjes is opgegeven. Hieronder vindt u de lijst met sets:

Set Beschrijving
{N,} Kwantificeert het voorgaande teken of de voorgaande groep en komt overeen met ten minste n exemplaren.
* Kwantificeert het voorgaande teken of de voorgaande groep en komt overeen met nul of meer exemplaren.
[0123] Komt overeen met de opgegeven cijfers (0, 1, 2 of 3)
[^arn] komt overeen met elk teken BEHALVE a, r en n
D Komt overeen met elk cijfer (0-9).
[0-5][0-9] komt overeen met tweecijferige getallen tussen 00 en 59
In Komt overeen met elk alfanumeriek teken (a-z, A-Z, 0-9 of _).
[een] Komt overeen met alle kleine letters tussen a en n.
D Komt overeen met elk niet-cijferig teken.
[arn] komt overeen met het feit dat een van de opgegeven tekens (a, r of n) aanwezig is
[a-zA-Z] komt overeen met elk teken tussen a en z, kleine letters OF hoofdletters
[0-9] komt overeen met elk cijfer tussen 0 en 9

Overeenkomen met object

Een Match-object bevat alle informatie over de zoekopdracht en het resultaat en als er geen match wordt gevonden, wordt Geen geretourneerd. Laten we eens kijken naar enkele veelgebruikte methoden en attributen van het matchobject.

1. De string en de regex ophalen

match.re attribuut retourneert de doorgegeven reguliere expressie en match.string attribuut retourneert de doorgegeven tekenreeks.

Voorbeeld: De tekenreeks en de regex van het overeenkomende object ophalen

De code zoekt naar de letter G op een woordgrens in de string Welkom bij GeeksForGeeks en drukt het reguliere expressiepatroon af ( res.re> ) en de originele string ( res.string> ) .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)>

>

>

Uitvoer

re.compile('G') Welcome to GeeksForGeeks>

2. Index van het overeenkomende object verkrijgen

  • start() methode retourneert de startindex van de overeenkomende subtekenreeks
  • end() methode retourneert de eindindex van de overeenkomende subtekenreeks
  • De methode span() retourneert een tupel die de begin- en eindindex van de overeenkomende subtekenreeks bevat

Voorbeeld: Index van het overeenkomende object ophalen

De code zoekt naar de substring Gee op een woordgrens in de string Welkom bij GeeksForGeeks en drukt de startindex van de match af (res.start()>), de eindindex van de wedstrijd (res.end()>), en de duur van de wedstrijd (res.span()>).

Python3




import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())>

>

>

Uitvoer

11 14 (11, 14)>

3. Het verkrijgen van een overeenkomende substring

group() methode retourneert het deel van de tekenreeks waarvoor de patronen overeenkomen. Zie het onderstaande voorbeeld voor een beter begrip.

Voorbeeld: Overeenkomende subtekenreeks verkrijgen

De code zoekt naar een reeks van twee niet-cijferige tekens gevolgd door een spatie en de letter ‘t’ in de tekenreeks Welkom bij GeeksForGeeks en drukt de overeenkomende tekst af met res.group()> .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())>

>

>

Uitvoer

me t>

In het bovenstaande voorbeeld specificeert ons patroon de string die ten minste twee tekens bevat, gevolgd door een spatie, en die spatie wordt gevolgd door een t.

Gerelateerd artikel:

Referentie:
https://docs.python.org/2/library/re.html

We hebben RegEx in Python besproken, we hebben de metatekens, functies en speciale reeksen in RegEx Python doorgenomen.

Reguliere expressie is een heel belangrijk concept in Python, we hebben geprobeerd het op een eenvoudige manier uit te leggen. Ik hoop dat het helpt tijdens je Python-reis !!