Go Regexp: Adakah Mana-mana Watak Padan Baris Baharu?
Walaupun kenyataan dokumentasi bahawa sebarang aksara (.) dalam sintaks re2 Go sepadan dengan mana-mana watak, termasuk baris baharu (s=true), kes tertentu menunjukkan sebaliknya. Sebagai contoh, program berikut menunjukkan bahawa mana-mana watak tidak sepadan dengan baris baharu:
<code class="go">import "regexp" func main() { str := "hello\nworld" match, _ := regexp.MatchString(".*", str) println(match) // false }</code>
Penyelesaian: Dot All Flag
Untuk menangani isu ini, pakej regexp Go menyediakan bendera "titik semua" (?s). Apabila ditambahkan pada ungkapan biasa, bendera ini membenarkan aksara titik (.) untuk memadankan baris baharu.
<code class="go">func main() { str := "hello\nworld" match, _ := regexp.MatchString("(?s).*", str) println(match) // true }</code>
Dengan bendera (?s), mana-mana aksara (.) kini sepadan dengan aksara baris baharu. Ini sejajar dengan gelagat kebanyakan enjin regex lain, yang biasanya tidak sepadan dengan baris baharu secara lalai.
Atas ialah kandungan terperinci Pergi Regexp: Adakah Watak Titik Padan Baris Baharu secara Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!