Heim >Backend-Entwicklung >Python-Tutorial >Warum stimmt der reguläre Ausdruck „\d' mit IP-Adressen wie „78.46.92.168:8000' überein und nicht nur mit numerischen Ziffern?

Warum stimmt der reguläre Ausdruck „\d' mit IP-Adressen wie „78.46.92.168:8000' überein und nicht nur mit numerischen Ziffern?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 06:43:02176Durchsuche

Why does the regex

Überprüfen der gesamten Zeichenfolge mit einer Regex

Beim Versuch, mithilfe der Regex „d“ festzustellen, ob eine Zeichenfolge numerisch ist, ist dies möglich Es kann festgestellt werden, dass das Muster auch mit IP-Adressen wie „78.46.92.168:8000“ übereinstimmt. Dies kann verwirrend sein, da man erwarten könnte, dass „d“ nur mit numerischen Ziffern übereinstimmt. Um zu verstehen, warum dies geschieht, ist es notwendig, das Verhalten von „d“ zu verstehen.

„d“ verstehen

Die Zeichenklasse „d“ stimmt mit jeder überein einstelliges Zeichen im ASCII-Bereich (0-9). Der „ “-Quantifizierer bezeichnet ein oder mehrere Vorkommen des vorhergehenden Elements („d“ in diesem Fall) und gibt an, dass „d“ mit einer Folge von einer oder mehreren Ziffern übereinstimmt.

In der Beispielzeichenfolge „78.46. 92.168:8000“ ist die Sequenz „78“ eine gültige Übereinstimmung für „d“. Es entspricht den ersten 78, nicht der gesamten Zeichenfolge. Da die Übereinstimmung erfolgreich ist, ruft der Code doStuff() auf.

Übereinstimmung mit der gesamten Zeichenfolge

Um die gesamte Zeichenfolge abzugleichen und sicherzustellen, dass sie nur numerische Ziffern enthält , ist es notwendig, ein spezifischeres Regex-Muster zu verwenden.

  • **Hinzufügen von „^“ und „$“:** Hinzufügen von „^“ (Anfang der Zeichenfolge) und „$“ (Ende der Zeichenfolge). ) zum regulären Ausdruck stellt sicher, dass er mit der gesamten Eingabezeichenfolge übereinstimmt. Beispielsweise würde „^d $“ nur mit Zeichenfolgen übereinstimmen, die ausschließlich aus Ziffern bestehen.
  • Verwendung von „isdigit()“: Python stellt die Methode „isdigit()“ für Zeichenfolgen bereit, die zurückgibt ein boolescher Wert, der angibt, ob die gesamte Zeichenfolge nur numerische Ziffern enthält. Beispielsweise würde „78.46.92.168:8000“.isdigit() „False“ zurückgeben, da die Zeichenfolge nicht-stellige Zeichen enthält.

Das obige ist der detaillierte Inhalt vonWarum stimmt der reguläre Ausdruck „\d' mit IP-Adressen wie „78.46.92.168:8000' überein und nicht nur mit numerischen Ziffern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn