Heim > Backend-Entwicklung > Golang > Go Regexp: Entspricht das Punktzeichen standardmäßig Newline?

Go Regexp: Entspricht das Punktzeichen standardmäßig Newline?

DDD
Freigeben: 2024-10-27 05:38:03
Original
892 Leute haben es durchsucht

Go Regexp: Does the Dot Character Match Newline by Default?

Go Regexp: Passt irgendein Zeichen zu Newline?

Trotz der Aussage in der Dokumentation, dass das beliebige Zeichen (.) in der re2-Syntax von Go mit jedem übereinstimmt Zeichen, einschließlich Zeilenumbruch (s=true), weisen bestimmte Fälle auf etwas anderes hin. Das folgende Programm zeigt beispielsweise, dass das beliebige Zeichen nicht mit Newline übereinstimmt:

<code class="go">import "regexp"

func main() {
    str := "hello\nworld"
    match, _ := regexp.MatchString(".*", str)
    println(match) // false
}</code>
Nach dem Login kopieren

Lösung: Dot All Flag

Um dieses Problem zu beheben, verwenden Sie das Regexp-Paket von Go stellt das Flag „Punkt alle“ (?s) bereit. Beim Hinzufügen zu einem regulären Ausdruck ermöglicht dieses Flag, dass das Punktzeichen (.) mit Zeilenumbrüchen übereinstimmt.

<code class="go">func main() {
    str := "hello\nworld"
    match, _ := regexp.MatchString("(?s).*", str)
    println(match) // true
}</code>
Nach dem Login kopieren

Mit dem Flag (?s) stimmt das beliebige Zeichen (.) jetzt mit Zeilenumbrüchen überein. Dies stimmt mit dem Verhalten der meisten anderen Regex-Engines überein, die normalerweise standardmäßig keine Zeilenumbrüche berücksichtigen.

Das obige ist der detaillierte Inhalt vonGo Regexp: Entspricht das Punktzeichen standardmäßig Newline?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage