Maison > développement back-end > Golang > le corps du texte

Pourquoi le caractère point de Go Regex ne correspond-il pas aux nouvelles lignes par défaut ?

Mary-Kate Olsen
Libérer: 2024-10-27 21:23:02
original
889 Les gens l'ont consulté

Why Doesn't Go Regex's Dot Character Match Newlines By Default?

Go Regex : correspondance des caractères de point et de nouvelle ligne

La documentation sur la syntaxe Go re2 indique que le caractère point (.) correspond à n'importe quel caractère, y compris les sauts de ligne lorsque le(s) mode(s) "simple ligne" sont activés. Cependant, un programme simple révèle que le caractère point ne correspond pas aux nouvelles lignes par défaut.

Programme :

<code class="go">package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "foo\nbar\nbaz"
    pattern := `foo.*bar`

    matched, err := regexp.MatchString(pattern, text)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(matched)
}</code>
Copier après la connexion

Résultat :

false
Copier après la connexion

La sortie montre que le Le modèle ne correspond pas au texte, même si le texte contient "foo" et "bar" séparés par une nouvelle ligne.

Raison

Comme beaucoup d'autres moteurs d'expressions régulières, le le caractère point dans Go ne correspond pas aux nouvelles lignes par défaut. Pour activer la correspondance de nouvelle ligne, l'indicateur "pointer tout" (?s) doit être ajouté à l'expression régulière :

<code class="go">pattern := `foo.*?sbar`</code>
Copier après la connexion

Avec l'indicateur "pointer tout" activé, l'expression régulière correspondra au texte comme prévu :

true
Copier après la connexion

Par conséquent, pour faire correspondre n'importe quel caractère, y compris les nouvelles lignes, dans l'expression rationnelle Go, le drapeau "pointer tout" (?s) doit être utilisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!