Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pergi Regexp: Adakah Watak Titik Padan Baris Baharu secara Lalai?

Pergi Regexp: Adakah Watak Titik Padan Baris Baharu secara Lalai?

DDD
DDDasal
2024-10-27 05:38:03850semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn