Heim > Artikel > Backend-Entwicklung > Go Regexp: Entspricht das Punktzeichen standardmäßig Newline?
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>
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>
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!