2017-05-15 2 views
-1

Können Sie bitte dieses Muster für mich erklären? pattern = R "(. +) \ 1" und das Muster = R "(. +) \ 2"über Mustermuster = r "(. +) 1" und Muster = r "(. +) 2" in Python

wenn ich das folgende Skript verwenden, gibt es kein Problem:

import re 
pattern = r"(.+) \1" 
match = re.match(pattern, "word word") 
if match: 
    print ("Match 1") 

aber wenn i ändern das Muster zu r "(. +) \ 2" es steigt ein Fehler auf. Bitte erläutern Sie genau, was dieses Muster bedeutet.

import re 
pattern = r"(.+) \2" 
match = re.match(pattern, "egg egg egg") 
if match: 
    print ("Match 1") 
+0

'\ 1' ist eine Rückverweisung; Es passt zu welcher Gruppe auch immer 1 passt. Es gibt nur ** eine Gruppe ** in deinem Muster, also kann '\ 2' nichts referenzieren. –

Antwort

1

\1 entsprechen re.search(...).group(1), der ersten Klammer-separierte Ausdruck innerhalb des regulären Ausdrucks. Da es in Ihrem regex keine 2nd group gibt, deshalb funktioniert es nicht. Wenn Sie die zweite Gruppe hinzufügen, dann wird es funktionieren

import re 
pattern = r"(.+)() \2" 
match = re.match(pattern, "egg egg egg") 
if match: 
    print ("Match 1") 
Match 1 
Verwandte Themen