Einige fragen sich vielleicht, warum der folgende Regex auch ohne das r-Präfix funktioniert:
<code class="python">import re print (re.sub('\s+', ' ', 'hello there there'))</code>
Im Allgemeinen ist es so Ich dachte, dass das Präfix r immer dann erforderlich ist, wenn Escape-Sequenzen verwendet werden, aber dieses Beispiel scheint dem zu widersprechen.
Das Präfix r wird verwendet, um einen „Rohstring“ zu erstellen. , was bedeutet, dass die Escape-Sequenzen in der Zeichenfolge nicht als Sonderzeichen interpretiert werden. Dies kann nützlich sein, wenn Sie ein Zeichen verwenden möchten, das normalerweise als Escape-Sequenz interpretiert wird, wie zum Beispiel den Backslash ().
Im obigen Beispiel wird die Escape-Sequenz s verwendet, um ein oder mehrere Leerzeichen zu finden Charaktere. Ohne das Präfix r würde diese Escape-Sequenz als Tabulatorzeichen (t) interpretiert werden. Da jedoch das Präfix r verwendet wird, wird die Escape-Sequenz wörtlich interpretiert und entspricht einem oder mehreren Leerzeichen.
Es gibt einige Ausnahmen von der Regel, dass Escape-Sequenzen gelten muss mit dem Präfix r verwendet werden. Eine Ausnahme bildet die Escape-Sequenz n, die zur Darstellung eines Zeilenumbruchzeichens verwendet wird. Diese Escape-Sequenz kann ohne das Präfix r verwendet werden, wie im folgenden Beispiel gezeigt:
<code class="python">print '\n'</code>
Eine weitere Ausnahme ist die Escape-Sequenz \, die zur Darstellung eines Backslash-Zeichens verwendet wird. Diese Escape-Sequenz kann auch ohne das r-Präfix verwendet werden, wie im folgenden Beispiel gezeigt:
<code class="python">print '\'</code>
Das r-Präfix ist nicht immer erforderlich, wenn Escape-Sequenzen in Python verwendet werden. Im Allgemeinen ist es jedoch eine gute Idee, das Präfix r zu verwenden, um Verwirrung oder unerwartetes Verhalten zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum ist für Regex in Python nicht immer ein r-Präfix erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!