A Regulärer Ausdruck oder RegEx ist eine spezielle Zeichenfolge, die ein Suchmuster verwendet, um eine Zeichenfolge oder eine Reihe von Zeichenfolgen zu finden.
Es kann das Vorhandensein oder Fehlen eines Textes erkennen, indem es ihn mit einem bestimmten Muster abgleicht, und kann ein Muster auch in ein oder mehrere Untermuster aufteilen.
Regex-Modul in Python
Python verfügt über ein integriertes Modul namens Re das für reguläre Ausdrücke in Python verwendet wird. Wir können dieses Modul mithilfe der Importanweisung importieren.
Beispiel: Importieren des Re-Moduls in Python
Python3
# importing re module> import> re> |
>
>
Wie verwende ich RegEx in Python?
Sie können RegEx in Python verwenden, nachdem Sie das Re-Modul importiert haben.
Beispiel:
Dieser Python-Code verwendet reguläre Ausdrücke, um nach dem Wort zu suchen Portal in der angegebenen Zeichenfolge und gibt dann die Start- und Endindizes des übereinstimmenden Worts innerhalb der Zeichenfolge aus.
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())> |
>
>Ausgabe
Start Index: 34 End Index: 40>
Notiz: Hier steht das r-Zeichen (r’portal’) für Raw, nicht für Regex. Die Rohzeichenfolge unterscheidet sich geringfügig von einer normalen Zeichenfolge. Das Zeichen wird nicht als Escape-Zeichen interpretiert. Dies liegt daran, dass die Engine für reguläre Ausdrücke das -Zeichen für ihren eigenen Escape-Zweck verwendet.
Bevor wir mit dem Python-Regex-Modul beginnen, sehen wir uns an, wie man Regex mithilfe von Metazeichen oder speziellen Sequenzen tatsächlich schreibt.
Metazeichen
Metazeichen sind Zeichen mit besonderer Bedeutung.
Um die RE-Analogie zu verstehen, sind Metazeichen nützlich und wichtig. Sie werden in Funktionen des Moduls re verwendet. Nachfolgend finden Sie die Liste der Metazeichen.
| Metazeichen | Beschreibung |
|---|---|
| Wird verwendet, um die besondere Bedeutung des darauf folgenden Zeichens zu löschen SQL mit zufälliger Reihenfolge | |
| [] | Stellen Sie eine Zeichenklasse dar |
| ^ | Entspricht dem Anfang |
| $ | Passt zum Ende |
| . | Entspricht jedem Zeichen außer Newline |
| | | Bedeutet ODER (Übereinstimmt mit einem der durch es getrennten Zeichen. |
| ? | Entspricht keinem oder einem Vorkommen |
| * | Beliebig viele Vorkommen (einschließlich 0 Vorkommen) |
| + | Ein oder mehrere Vorkommnisse |
| {} | Geben Sie die Anzahl der Vorkommen eines vorangehenden regulären Ausdrucks an, der abgeglichen werden soll. |
| () | Schließen Sie eine Gruppe von Regex ein |
Lassen Sie uns jedes dieser Metazeichen im Detail besprechen:
1. – Backslash
Der Backslash () stellt sicher, dass das Zeichen nicht besonders behandelt wird. Dies kann als eine Möglichkeit betrachtet werden, Metazeichen zu maskieren.
Wenn Sie beispielsweise nach dem Punkt (.) in der Zeichenfolge suchen möchten, werden Sie feststellen, dass der Punkt (.) als Sonderzeichen behandelt wird, ebenso wie eines der Metazeichen (wie in der obigen Tabelle gezeigt). In diesem Fall verwenden wir also den Backslash () direkt vor dem Punkt (.), damit er seine Besonderheit verliert. Zum besseren Verständnis sehen Sie sich das folgende Beispiel an.
Beispiel:
Die erste Suche ( re.search(r'.', s)> ) stimmt bei der zweiten Suche mit jedem Zeichen überein, nicht nur mit dem Punkt ( re.search(r'.', s)> ) sucht speziell nach dem Punktzeichen und passt es an.
Python3
import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)> |
>
>Ausgabe
>
2. [] – Eckige Klammern
Eckige Klammern ([]) stellen eine Zeichenklasse dar, die aus einer Reihe von Zeichen besteht, die wir abgleichen möchten. Beispielsweise passt die Zeichenklasse [abc] zu jedem einzelnen a, b oder c.
Wir können auch einen Zeichenbereich angeben, indem wir – in den eckigen Klammern verwenden. Zum Beispiel,
- [0, 3] ist ein Beispiel als [0123]
- [a-c] ist dasselbe wie [abc]
Wir können die Zeichenklasse auch mit dem Caret-Symbol (^) umkehren. Zum Beispiel,
- [^0-3] bedeutet eine beliebige Zahl außer 0, 1, 2 oder 3
- [^a-c] bedeutet jedes Zeichen außer a, b oder c
Beispiel:
In diesem Code verwenden Sie reguläre Ausdrücke, um alle Zeichen in der Zeichenfolge zu finden, die im Bereich von „a“ bis „m“ liegen. Der re.findall()> Die Funktion gibt eine Liste aller dieser Zeichen zurück. In der angegebenen Zeichenfolge sind die Zeichen, die diesem Muster entsprechen: „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)> |
>
Bedingungsoperator in Java
>Ausgabe
['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>
3. ^ – Caret
Das Caret-Symbol (^) stimmt mit dem Anfang der Zeichenfolge überein, d. h. es prüft, ob die Zeichenfolge mit den angegebenen Zeichen beginnt oder nicht. Zum Beispiel -
- ^g prüft, ob die Zeichenfolge mit g beginnt, z. B. Geeks, Globe, Girl, G usw.
- ^ge prüft, ob die Zeichenfolge mit ge beginnt, z. B. geeks, geeksforgeeks usw.
Beispiel:
Dieser Code verwendet reguläre Ausdrücke, um zu prüfen, ob eine Liste von Zeichenfolgen mit beginnt Der . Wenn eine Zeichenfolge mit beginnt Dann ist es als „Übereinstimmend“ markiert andernfalls wird es als gekennzeichnet Nicht passend.
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}'>)> |
>
>Ausgabe
Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>
4. $ – Dollar
Das Symbol Dollar($) stimmt mit dem Ende der Zeichenfolge überein, d. h. es prüft, ob die Zeichenfolge mit den angegebenen Zeichen endet oder nicht. Zum Beispiel-
- s$ sucht nach der Zeichenfolge, die mit einem endet, wie z. B. geeks, ends, s usw.
- ks$ sucht nach der Zeichenfolge, die mit ks endet, wie z. B. geeks, geeksforgeeks, ks usw.
Beispiel:
Dieser Code verwendet einen regulären Ausdruck, um zu prüfen, ob die Zeichenfolge mit endet Welt!. Wenn eine Übereinstimmung gefunden wird, wird gedruckt Übereinstimmung gefunden! andernfalls wird gedruckt Übereinstimmung nicht gefunden .
Python3
import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>Ausgabe
Match found!>
5. . – Punkt
Das Punktsymbol (.) stimmt nur mit einem einzelnen Zeichen überein, mit Ausnahme des Zeilenumbruchzeichens ( ). Zum Beispiel -
- a.b sucht nach der Zeichenfolge, die an der Stelle des Punkts ein beliebiges Zeichen enthält, z. B. acb, acbd, abbb usw
- .. prüft, ob die Zeichenfolge mindestens 2 Zeichen enthält
Beispiel:
Dieser Code verwendet einen regulären Ausdruck, um nach dem Muster zu suchen brauner Fuchs innerhalb der Zeichenfolge. Der Punkt (.>) im Muster steht für ein beliebiges Zeichen. Wenn eine Übereinstimmung gefunden wird, wird gedruckt Übereinstimmung gefunden! andernfalls wird gedruckt Übereinstimmung nicht gefunden .
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.'>)> |
>
>Ausgabe
Match found!>
6. | - Oder
Das Or-Symbol fungiert als Oder-Operator, d. h. es prüft, ob das Muster vor oder nach dem Oder-Symbol in der Zeichenfolge vorhanden ist oder nicht. Zum Beispiel -
- a|b stimmt mit jeder Zeichenfolge überein, die a oder b enthält, z. B. acd, bcd, abcd usw.
7. ? - Fragezeichen
Das Fragezeichen (?) ist ein Quantifizierer in regulären Ausdrücken, der angibt, dass das vorhergehende Element null oder einmal gefunden werden sollte. Hier können Sie angeben, dass das Element optional ist, d. h. es kann einmal oder gar nicht vorkommen. Zum Beispiel,
- ab?c wird für die Zeichenfolge ac, acb, dabc abgeglichen, aber nicht für abbc, da es zwei b gibt. Ebenso wird es nicht mit abdc abgeglichen, da auf b kein c folgt.
8.* – Stern
Das Sternsymbol (*) entspricht null oder mehr Vorkommen des regulären Ausdrucks vor dem *-Symbol. Zum Beispiel -
- ab*c wird für die Zeichenfolge ac, abc, abbbc, dabc usw. abgeglichen, aber nicht für abdc, da auf b kein c folgt.
9. + – Plus
Das Pluszeichen (+) stimmt mit einem oder mehreren Vorkommen des regulären Ausdrucks vor dem Pluszeichen überein. Zum Beispiel -
- ab+c wird für die Zeichenfolge abc, abbc, dabc abgeglichen, aber nicht für ac, abdc, da in ac kein b vorhanden ist und in abdc kein c auf b folgt.
10. {m, n} – Klammern
Klammern stimmen mit allen Wiederholungen vor dem regulären Ausdruck von m bis einschließlich n überein. Zum Beispiel -
- a{2, 4} wird für die Zeichenfolge aaab, baaaac, gaad abgeglichen, aber nicht für Zeichenfolgen wie abc, bc, da es in beiden Fällen nur ein a oder kein a gibt.
11. () – Gruppe
Das Gruppensymbol wird zum Gruppieren von Untermustern verwendet. Zum Beispiel -
- (a|b)cd stimmt mit Zeichenfolgen wie acd, abcd, gacd usw. überein.
Spezielle Sequenzen
Spezielle Sequenzen stimmen nicht mit dem tatsächlichen Zeichen in der Zeichenfolge überein, sondern geben stattdessen die spezifische Stelle in der Suchzeichenfolge an, an der die Übereinstimmung erfolgen muss. Es erleichtert das Schreiben häufig verwendeter Muster.
Liste spezieller Sequenzen
| Spezielle Sequenz | Beschreibung | Beispiele | |
|---|---|---|---|
| A | Trifft zu, wenn die Zeichenfolge mit dem angegebenen Zeichen beginnt | Aphor | für Geeks |
| Für die Welt | |||
| B | Entspricht, wenn das Wort mit dem angegebenen Zeichen beginnt oder endet. (string) sucht nach dem Anfang des Wortes und (string) sucht nach dem Ende des Wortes. | ge | Geeks |
| erhalten | |||
| B | Es ist das Gegenteil von , d. h. die Zeichenfolge sollte nicht mit der angegebenen Regex beginnen oder enden. | Bge | zusammen |
| Schmiede | |||
| D | Entspricht einer beliebigen Dezimalziffer, dies entspricht der eingestellten Klasse [0-9] | D | 123 |
| gee1 | |||
| D | Entspricht jedem nicht-stelligen Zeichen, dies entspricht der Set-Klasse [^0-9] | D | Geeks |
| geek1 | |||
| S | Entspricht jedem Leerzeichen. | S | Mensch, ks |
| a v. Chr. a | |||
| S | Entspricht jedem Zeichen, das kein Leerzeichen ist | S | ein bd |
| A B C D | |||
| In | Entspricht jedem alphanumerischen Zeichen, dies entspricht der Klasse [a-zA-Z0-9_]. | In | 123 |
| geeKs4 | |||
| IN | Entspricht jedem nicht alphanumerischen Zeichen. | IN | >$ |
| geben | |||
| MIT | Trifft zu, wenn die Zeichenfolge mit dem angegebenen regulären Ausdruck endet | ab | abcdab |
| Bababab |
RegEx-Funktionen
Re Modul enthält viele Funktionen die uns helfen, eine Zeichenfolge nach einer Übereinstimmung zu durchsuchen.
Sehen wir uns verschiedene Funktionen an, die dieses Modul für die Arbeit mit Regex in Python bereitstellt.
| Funktion | Beschreibung |
|---|---|
| re.findall() | findet alle übereinstimmenden Vorkommen in einer Liste und gibt sie zurück |
| re.compile() | Reguläre Ausdrücke werden in Musterobjekte kompiliert |
| re.split() | Teilen Sie die Zeichenfolge nach dem Vorkommen eines Zeichens oder Musters auf. |
| re.sub() | Ersetzt alle Vorkommen eines Zeichens oder Musters durch eine Ersatzzeichenfolge. |
| re.escape() | Entgeht Sonderzeichen |
| Forschung() | Sucht nach dem ersten Vorkommen eines Zeichens oder Musters |
Sehen wir uns die Funktionsweise dieser RegEx-Funktionen anhand von Definitionen und Beispielen an:
1. re.findall()
Gibt alle nicht überlappenden Musterübereinstimmungen in der Zeichenfolge als Liste von Zeichenfolgen zurück. Die Zeichenfolge wird von links nach rechts durchsucht und Treffer werden in der gefundenen Reihenfolge zurückgegeben.
Alle Vorkommen eines Musters finden
Dieser Code verwendet einen regulären Ausdruck ( d+> ) um alle Folgen einer oder mehrerer Ziffern in der angegebenen Zeichenfolge zu finden. Es sucht nach numerischen Werten und speichert diese in einer Liste. In diesem Beispiel werden die Zahlen gesucht und gedruckt 123456789 Und 987654321 aus der Eingabezeichenfolge.
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)> |
>
>Ausgabe
['123456789', '987654321']>
2. re.compile()
Reguläre Ausdrücke werden in Musterobjekte kompiliert, die über Methoden für verschiedene Vorgänge wie die Suche nach Musterübereinstimmungen oder das Durchführen von Zeichenfolgenersetzungen verfügen.
Beispiel 1:
Der Code verwendet ein reguläres Ausdrucksmuster [a-e]> um alle Kleinbuchstaben von „a“ bis „e“ in der Eingabezeichenfolge zu finden und aufzulisten Ja, sagte Herr Gibenson Stark. Die Ausgabe wird sein ['e', 'a', 'd', 'b', 'e']> , das sind die passenden Zeichen.
Python
Lesen einer CSV-Datei in Java
import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))> |
>
>Ausgabe
['e', 'a', 'd', 'b', 'e', 'a']>
Die Ausgabe verstehen:
- Das erste Vorkommen ist „e“ in „Aye“ und nicht „A“, da die Groß-/Kleinschreibung beachtet wird.
- Das nächste Vorkommen ist „a“ in said, dann „d“ in said, gefolgt von „b“ und „e“ in Gibenson, das letzte „a“ stimmt mit Stark überein.
- Der Metazeichen-Backslash „“ spielt eine sehr wichtige Rolle, da er verschiedene Sequenzen signalisiert. Wenn der Backslash ohne seine besondere Bedeutung als Metazeichen verwendet werden soll, verwenden Sie „“
Beispiel 2: Die festgelegte Klasse [s,.] entspricht jedem Leerzeichen, „,“ oder „.“ .
Der Code verwendet reguläre Ausdrücke, um alle einzelnen Ziffern und Ziffernfolgen in den angegebenen Eingabezeichenfolgen zu finden und aufzulisten. Es findet einzelne Ziffern mit d> und Ziffernfolgen mit 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'>))> |
>
>Ausgabe
['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>
Beispiel 3:
Der Code verwendet reguläre Ausdrücke, um Wortzeichen, Wortzeichenfolgen und Nicht-Wortzeichen in Eingabezeichenfolgen zu suchen und aufzulisten. Es stellt Listen der übereinstimmenden Zeichen oder Sequenzen bereit.
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.'>))> |
>
>Ausgabe
['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'] [' ', ' ', '*', '*', '*', ' ...>
Beispiel 4:
Der Code verwendet ein reguläres Ausdrucksmuster „ab*“, um alle Vorkommen von „ab“, gefolgt von null oder mehr „b“-Zeichen, in der Eingabezeichenfolge ababbaabbb zu finden und aufzulisten. Es wird die folgende Liste von Übereinstimmungen zurückgegeben: [‘ab’, ‘abb’, ‘abbb’].
Python
import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))> |
>
Python oder
>Ausgabe
['ab', 'abb', 'a', 'abbb']>
Die Ausgabe verstehen:
- Unser RE ist ab*, wobei „a“ von einer beliebigen Zahl begleitet wird. von 'b's, beginnend bei 0.
- Die Ausgabe „ab“ ist gültig, da ein einzelnes „a“ von einem einzelnen „b“ begleitet wird.
- Die Ausgabe „abb“ ist gültig, da ein einzelnes „a“ von zwei „b“ begleitet wird.
- Die Ausgabe „a“ ist gültig, da ein einzelnes „a“ von 0 „b“ begleitet wird.
- Die Ausgabe „abbb“ ist gültig, da ein einzelnes „a“ von drei „b“ begleitet wird.
3. re.split()
Teilen Sie die Zeichenfolge nach dem Vorkommen eines Zeichens oder Musters auf. Sobald dieses Muster gefunden wird, werden die verbleibenden Zeichen der Zeichenfolge als Teil der resultierenden Liste zurückgegeben.
Syntax :
re.split(pattern, string, maxsplit=0, flags=0)>
Der erste Parameter, Muster, bezeichnet den regulären Ausdruck, Zeichenfolge ist die angegebene Zeichenfolge, in der nach Muster gesucht wird und in der die Aufteilung erfolgt. Wenn maxsplit nicht angegeben wird, wird es als Null „0“ betrachtet, und wenn ein Wert ungleich Null angegeben wird, dann es kommt höchstens zu so vielen Spaltungen. Wenn maxsplit = 1, wird die Zeichenfolge nur einmal geteilt, was zu einer Liste mit der Länge 2 führt. Die Flags sind sehr nützlich und können helfen, den Code zu kürzen. Sie sind in dieser Aufteilung keine notwendigen Parameter, z. B.: flags = re.IGNORECASE , die Groß-/Kleinschreibung, d. h. der Klein- oder Großbuchstabe wird ignoriert.
Beispiel 1:
Teilt eine Zeichenfolge unter Verwendung von Nicht-Wort-Zeichen und Leerzeichen als Trennzeichen und gibt Wörter zurück: ['Words', 'words', 'Words']> . Betrachtet Apostrophe als Nicht-Wort-Zeichen: ['Word', 's', 'words', 'Words']> . Teilt mithilfe von Nicht-Wort-Zeichen und Ziffern: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Teilt mit Ziffern als Trennzeichen: ['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'>))> |
>
>Ausgabe
['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>
Beispiel 2:
Die erste Anweisung teilt die Zeichenfolge beim ersten Vorkommen einer oder mehrerer Ziffern: ['On ', 'th Jan 2016, at 11:02 AM']> . Second teilt die Zeichenfolge unter Verwendung der Kleinbuchstaben a bis f als Trennzeichen auf, ohne Berücksichtigung der Groß- und Kleinschreibung: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Third teilt die Zeichenfolge unter Verwendung der Kleinbuchstaben a bis f als Trennzeichen auf, wobei die Groß-/Kleinschreibung beachtet wird: ['', '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'>))> |
>
>Ausgabe
['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()
Das „sub“ in der Funktion steht für SubString, ein bestimmtes reguläres Ausdrucksmuster wird in der angegebenen Zeichenfolge (3. Parameter) gesucht und nach dem Finden des Teilzeichenfolgenmusters durch repl (2. Parameter) ersetzt, überprüft count die Häufigkeit und behält sie bei das kommt vor.
Syntax:
re.sub(pattern, repl, string, count=0, flags=0)>
Beispiel 1:
- Die erste Anweisung ersetzt alle Vorkommen von „ub“ durch „~*“ (ohne Berücksichtigung der Groß-/Kleinschreibung):
'S~*ject has ~*er booked already'>. - Die zweite Anweisung ersetzt alle Vorkommen von „ub“ durch „~*“ (Groß-/Kleinschreibung beachten):
'S~*ject has Uber booked already'>. - Die dritte Anweisung ersetzt das erste Vorkommen von „ub“ durch „~*“ (ohne Berücksichtigung der Groß-/Kleinschreibung):
'S~*ject has Uber booked already'>. - Viertens wird „AND“ durch „&“ ersetzt (Groß- und Kleinschreibung wird ignoriert):
'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))> |
>
>Ausgabe
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() ähnelt sub() in jeder Hinsicht, außer in der Art der Ausgabe. Es wird ein Tupel mit der Anzahl der gesamten Ersetzungen und der neuen Zeichenfolge zurückgegeben, nicht nur der Zeichenfolge.
Syntax:
re.subn(pattern, repl, string, count=0, flags=0)>
Beispiel:
re.subn()> ersetzt alle Vorkommen eines Musters in einer Zeichenfolge und gibt ein Tupel mit der geänderten Zeichenfolge und der Anzahl der vorgenommenen Ersetzungen zurück. Dies ist sowohl für Ersetzungen mit und ohne Berücksichtigung der Groß-/Kleinschreibung nützlich.
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>])> |
>
>Ausgabe
('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already> 6. re.escape()
Gibt eine Zeichenfolge mit umgekehrten Schrägstrichen für alle nicht alphanumerischen Zeichen zurück. Dies ist nützlich, wenn Sie eine beliebige Literalzeichenfolge abgleichen möchten, die möglicherweise Metazeichen regulärer Ausdrücke enthält.
Syntax:
re.escape(string)>
Beispiel:
re.escape()> wird verwendet, um Sonderzeichen in einer Zeichenfolge zu maskieren, sodass es sicher als Muster in regulären Ausdrücken verwendet werden kann. Dadurch wird sichergestellt, dass alle Zeichen mit besonderer Bedeutung in regulären Ausdrücken als Literalzeichen behandelt werden.
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'>))> |
>
>Ausgabe
This is Awesome even 1 AM I Asked what is this [a-9], he said ^WoW>
7. re.search()
Diese Methode gibt entweder None zurück (wenn das Muster nicht übereinstimmt) oder ein re.MatchObject enthält Informationen über den übereinstimmenden Teil der Zeichenfolge. Diese Methode stoppt nach der ersten Übereinstimmung und eignet sich daher eher zum Testen eines regulären Ausdrucks als zum Extrahieren von Daten.
Beispiel: Suche nach einem Vorkommen des Musters
Dieser Code verwendet einen regulären Ausdruck, um nach einem Muster in der angegebenen Zeichenfolge zu suchen. Wenn eine Übereinstimmung gefunden wird, werden die übereinstimmenden Teile der Zeichenfolge extrahiert und gedruckt.
In diesem speziellen Beispiel wird nach einem Muster gesucht, das aus einem Monat (Buchstaben) gefolgt von einem Tag (Ziffern) in der Eingabezeichenfolge „Ich wurde am 24. Juni geboren“ besteht. Wenn eine Übereinstimmung gefunden wird, wird die vollständige Übereinstimmung, der Monat, gedruckt , und der Tag.
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.'>)> |
String in ganze Zahlen umwandeln
>
>Ausgabe
Match at index 14, 21 Full match: June 24 Month: June Day: 24>
SETZT
A Satz ist eine Reihe von Zeichen, die in „[]“-Klammern eingeschlossen sind. Sätze werden verwendet, um ein einzelnes Zeichen in dem in Klammern angegebenen Zeichensatz abzugleichen. Nachfolgend finden Sie die Liste der Sets:
| Satz | Beschreibung |
|---|---|
| {N,} | Quantifiziert das vorhergehende Zeichen oder die vorhergehende Gruppe und stimmt mit mindestens n Vorkommen überein. |
| * | Quantifiziert das vorhergehende Zeichen oder die vorhergehende Gruppe und stimmt mit null oder mehr Vorkommen überein. |
| [0123] | Entspricht den angegebenen Ziffern (0, 1, 2 oder 3) |
| [^arn] | stimmt mit jedem Zeichen überein, AUSSER a, r und n |
| D | Entspricht jeder Ziffer (0-9). |
| [0-5][0-9] | Entspricht allen zweistelligen Zahlen zwischen 00 und 59 |
| In | Entspricht jedem alphanumerischen Zeichen (a-z, A-Z, 0-9 oder _). |
| [ein] | Entspricht jedem Kleinbuchstaben zwischen a und n. |
| D | Entspricht jedem nicht-stelligen Zeichen. |
| [arn] | Treffer, bei denen eines der angegebenen Zeichen (a, r oder n) vorhanden ist |
| [a-zA-Z] | Entspricht jedem Zeichen zwischen a und z, Kleinbuchstaben ODER Großbuchstaben |
| [0-9] | entspricht jeder Ziffer zwischen 0 und 9 |
Objekt abgleichen
Ein Match-Objekt enthält alle Informationen über die Suche und das Ergebnis. Wenn keine Übereinstimmung gefunden wird, wird „None“ zurückgegeben. Sehen wir uns einige der häufig verwendeten Methoden und Attribute des Match-Objekts an.
1. Den String und den regulären Ausdruck abrufen
match.re Das Attribut gibt den übergebenen regulären Ausdruck zurück und match.string Das Attribut gibt die übergebene Zeichenfolge zurück.
Beispiel: Abrufen der Zeichenfolge und des regulären Ausdrucks des übereinstimmenden Objekts
Der Code sucht nach dem Buchstaben G an einer Wortgrenze in der Zeichenfolge Willkommen bei GeeksForGeeks und gibt das reguläre Ausdrucksmuster aus ( res.re> ) und die Originalzeichenfolge ( res.string> ) .
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)> |
>
>Ausgabe
re.compile('G') Welcome to GeeksForGeeks> 2. Index des übereinstimmenden Objekts abrufen
- Die Methode start() gibt den Startindex des übereinstimmenden Teilstrings zurück
- Die Methode end() gibt den Endindex der übereinstimmenden Teilzeichenfolge zurück
- Die Methode span() gibt ein Tupel zurück, das den Start- und Endindex der übereinstimmenden Teilzeichenfolge enthält
Beispiel: Index des übereinstimmenden Objekts abrufen
Der Code sucht nach der Teilzeichenfolge „Gee“ an einer Wortgrenze in der Zeichenfolge „Willkommen bei GeeksForGeeks“ und gibt den Startindex der Übereinstimmung aus (res.start()>), der Endindex der Übereinstimmung (res.end()>) und die Spanne des Spiels (res.span()>).
Python3
import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())> |
>
>Ausgabe
11 14 (11, 14)>
3. Passende Teilzeichenfolge erhalten
Die Methode group() gibt den Teil der Zeichenfolge zurück, für den die Muster übereinstimmen. Zum besseren Verständnis sehen Sie sich das folgende Beispiel an.
Beispiel: Abgeglichener Teilstring wird angezeigt
Der Code sucht nach einer Folge von zwei nichtstelligen Zeichen, gefolgt von einem Leerzeichen und dem Buchstaben „t“ in der Zeichenfolge „Welcome to GeeksForGeeks“ und gibt den passenden Text mit aus res.group()> .
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())> |
>
>Ausgabe
me t>
Im obigen Beispiel gibt unser Muster an, dass die Zeichenfolge mindestens zwei Zeichen enthält, denen ein Leerzeichen folgt, und auf dieses Leerzeichen folgt ein t.
Verwandter Artikel:
Referenz:
https://docs.python.org/2/library/re.html
Wir haben RegEx in Python besprochen und die Metazeichen, Funktionen und speziellen Sequenzen in RegEx Python besprochen.
Reguläre Ausdrücke sind ein sehr wichtiges Konzept in Python. Wir haben versucht, es auf einfache Weise zu erklären. Ich hoffe, es hilft Ihnen bei Ihrer Python-Reise!!