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

Tutoriel avancé sur les expressions régulières dans le langage Go : comment utiliser la capture groupée

WBOY
Libérer: 2023-07-13 15:15:14
original
1712 Les gens l'ont consulté

Tutoriel avancé sur les expressions régulières en langage Go : Comment utiliser la capture de groupe

Les expressions régulières jouent un rôle extrêmement important dans le traitement de texte, et en langage Go, le package regexp est fourni dans la bibliothèque standard pour le traitement des expressions régulières Correspondance et remplacement. Dans le didacticiel précédent, nous avons appris la syntaxe de base des expressions régulières et comment effectuer des opérations simples de correspondance et de remplacement. Ce didacticiel présentera plus en détail comment utiliser la capture de groupe pour faciliter un traitement plus flexible des résultats de correspondance.

  1. Utilisez des parenthèses pour le regroupement
    Dans les expressions régulières, vous pouvez utiliser des parenthèses pour regrouper une partie du modèle afin de faciliter une utilisation ultérieure. Par exemple, nous pouvons utiliser des parenthèses pour regrouper les trois premiers nombres et les quatre derniers nombres, comme indiqué ci-dessous :
package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `(d{3})-(d{4})`
    text := "我的电话号码是123-4567,你的电话号码是987-6543。"

    re := regexp.MustCompile(pattern)
    result := re.FindAllStringSubmatch(text, -1)

    for _, match := range result {
        fmt.Println("完整匹配结果:", match[0])
        fmt.Println("前三个数字:", match[1])
        fmt.Println("后四个数字:", match[2])
    }
}
Copier après la connexion

Le résultat de sortie est :

完整匹配结果: 123-4567
前三个数字: 123
后四个数字: 4567
完整匹配结果: 987-6543
前三个数字: 987
后四个数字: 6543
Copier après la connexion

En utilisant des parenthèses pour regrouper, nous pouvons facilement obtenir les résultats correspondants. Le contenu de chaque groupe.

  1. Groupes nommés
    En plus d'utiliser des chiffres pour faire référence à des groupes, vous pouvez également utiliser des noms pour faire référence à des groupes. En utilisant la syntaxe (?P<name>pattern),我们可以为某个分组指定一个名称name. Par exemple, nous pouvons attribuer des noms au regroupement des trois premiers nombres et des quatre derniers nombres comme ceci :
package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `(?P<area>d{3})-(?P<number>d{4})`
    text := "我的电话号码是123-4567,你的电话号码是987-6543。"

    re := regexp.MustCompile(pattern)
    result := re.FindAllStringSubmatch(text, -1)

    for _, match := range result {
        fmt.Println("完整匹配结果:", match[0])
        fmt.Println("前三个数字:", match[1])
        fmt.Println("后四个数字:", match[2])
        fmt.Println("区号:", match[re.SubexpIndex("area")])
        fmt.Println("号码:", match[re.SubexpIndex("number")])
    }
}
Copier après la connexion

Le résultat est :

完整匹配结果: 123-4567
前三个数字: 123
后四个数字: 4567
区号: 123
号码: 4567
完整匹配结果: 987-6543
前三个数字: 987
后四个数字: 6543
区号: 987
号码: 6543
Copier après la connexion

En utilisant des groupes nommés, vous pouvez référencer des groupes non seulement par des nombres, mais aussi par numéros Groupes de référence par nom, rendant le code plus lisible et maintenable.

Résumé
Cet article explique comment utiliser les expressions régulières pour la capture de groupe en langage Go. En utilisant des parenthèses pour le regroupement, nous pouvons facilement obtenir le contenu de chaque groupe dans les résultats de correspondance. Dans le même temps, nous avons également appris à utiliser des groupes nommés pour référencer des groupes afin de rendre le code plus lisible et maintenable. J'espère que ce tutoriel vous aidera à comprendre la capture de groupe d'expressions régulières.

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!

Étiquettes associées:
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
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!