Table des matières
Contenu de la question
Solution de contournement
Maison développement back-end Golang fonction de division d'expression régulière python équivalente à golang

fonction de division d'expression régulière python équivalente à golang

Feb 13, 2024 pm 07:45 PM
字符串数组

python 正则表达式 split 函数在 golang 中等效

Dans le domaine de la programmation, les expressions régulières sont un outil puissant pour faire correspondre et traiter des chaînes. En Python, la fonction split est une fonction d'expression régulière couramment utilisée pour diviser une chaîne en sous-chaînes. Cependant, pour les développeurs utilisant Golang, ils peuvent se demander comment obtenir les mêmes fonctionnalités que la fonction split de Python dans Golang. Dans cet article, l'éditeur PHP Zimo vous expliquera comment utiliser la fonction de fractionnement d'expression régulière de manière équivalente dans Golang pour mieux utiliser cet outil puissant.

Contenu de la question

J'ai le code python suivant pour correspondre à une expression régulière ::

import re
digits_re = re.compile("([0-9ee.+]*)")

p = digits_re.split("hello, where are you 1.1?")

print(p)
Copier après la connexion

Cela donne ce résultat : : ['', '', 'h', 'e', '', '', 'l', '', 'l', '', 'o', '', ',', '', ' '、''、'w'、''、'h'、'e'、''、''、'r'、'e'、''、''、' '、''、'a' , '', 'r', 'e', '', '', ' ', '', 'y', '', 'o', '', 'u', '', ' ', '1.1 ', '', '', '?', '', '']

J'essaie d'obtenir le résultat ci-dessus en utilisant golang.

package main

import (
    "bytes"
    "fmt"
    "log"
    "os/exec"
    "regexp"
    "strconv"
)

func main() {
    // execute the command and get the output
    cmd := exec.command("echo", "hello, where are you 1.1?")
    var out bytes.buffer
    cmd.stdout = &out
    err := cmd.run()
    if err != nil {
        log.fatal(err)
    }

    // extract the numerical values from the output using a regular expression
    re := regexp.mustcompile(`([0-9ee.+]*)`)
    //matches := re.findallstring(out.string(), -1)
    splits := re.split(out.string(), -1)
    fmt.println(splits)

}
Copier après la connexion

J'obtiens le résultat suivant ::

[H l l o ,   w h r   a r   y o u   ? 
]
Copier après la connexion

Je pense que les expressions régulières dépendent de la langue, donc la fonction split() utilisée en python n'aide pas split() 函数对 golang 没有帮助。使用了 regexp 包中的多个 find*(). J'ai utilisé plusieurs fonctions find*() du package regexp, mais je n'ai pas trouvé de fonction qui fournirait la sortie du programme python ci-dessus.

Le but de la sortie d'un tableau de chaînes est de séparer les caractères qui ne peuvent pas être convertis en float et si la chaîne peut être analysée comme un flottant, je calcule la moyenne mobile.

Enfin, je combine le tout et présente le résultat comme une commande Linux watch.

Avez-vous besoin de plus de détails/contexte ? Je suis heureux de partager.

Merci beaucoup pour votre aide !

Solution de contournement

En attendant, j'ai obtenu quelque chose qui fonctionne pour mon cas d'utilisation. Ce n'est pas exactement le même format que python , mais il n'a pas de chaîne/caractère vide.

J'ai utilisé la fonction splitfindallstring pour obtenir le résultat souhaité.

// unfortunately go regex split doesn't work like python
    // so we construct the entire array with matched string (numericals)
    // and the split strings to combine the output
    splits := digitsre.split(string(out), -1)
    matches := digitsre.findallstring(string(out), -1)

    p := []string{}
    for i := 0; i < len(splits); i++ {
        p = append(p, matches[i])
        p = append(p, splits[i])
    }
Copier après la connexion

Avec l'extrait de code ci-dessus, j'obtiens quelque chose comme ::

[H e l l o ,   w h e r e   a r e   y o u  1.1 ?]
Copier après la connexion

Je ne suis pas très bon en regex, et d'une manière ou d'une autre, la méthode ci-dessus fonctionne pour mon cas d'utilisation.

Sur une note plus légère, j'ai entendu mes collègues plaisanter en disant que si vous résolvez un problème avec l'aide de regex, vous vous retrouverez avec deux problèmes ! ! !

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la fonction split() dans Oracle Comment utiliser la fonction split() dans Oracle May 07, 2024 pm 01:06 PM

La fonction SPLIT() divise une chaîne en un tableau par un délimiteur spécifié, renvoyant un tableau de chaînes où chaque élément est une partie séparée par un délimiteur de la chaîne d'origine. L'utilisation comprend : diviser une liste de valeurs séparées par des virgules dans un tableau, extraire les noms de fichiers des chemins et diviser les adresses e-mail en noms d'utilisateur et domaines.

Comment trier les chaînes en Java Comment trier les chaînes en Java Apr 02, 2024 am 02:18 AM

Façons de trier des chaînes en Java : utilisez la méthode Arrays.sort() pour trier un tableau de chaînes par ordre croissant. Utilisez la méthode Collections.sort() pour trier une liste de chaînes par ordre croissant. Utilisez l'interface Comparator pour un tri personnalisé des chaînes.

Que signifie \0 en langage C Que signifie \0 en langage C Apr 27, 2024 pm 10:54 PM

En langage C, \0 est la marque de fin d’une chaîne, appelée caractère nul ou terminateur. Étant donné que les chaînes sont stockées en mémoire sous forme de tableaux d'octets, le compilateur reconnaît la fin de la chaîne via \0, garantissant ainsi que les chaînes sont traitées correctement. \0 Comment ça marche : Le compilateur arrête de lire les caractères lorsqu'il rencontre \0 et les caractères suivants sont ignorés. \0 lui-même n'occupe pas d'espace de stockage. Les avantages incluent une gestion fiable des chaînes, une efficacité améliorée (pas besoin d'analyser l'ensemble du tableau pour trouver la fin) et une facilité de comparaison et de manipulation.

Que signifient les arguments en Java Que signifient les arguments en Java Apr 25, 2024 pm 10:15 PM

args signifie arguments de ligne de commande en Java et est un tableau de chaînes contenant la liste des arguments transmis au programme lors de son démarrage. Il n'est disponible que dans la méthode main et sa valeur par défaut est un tableau vide, chaque paramètre étant accessible par index. args est utilisé pour recevoir et traiter les arguments de ligne de commande afin de configurer ou de fournir des données d'entrée au démarrage d'un programme.

Que signifient les arguments en Java Que signifient les arguments en Java May 07, 2024 am 02:24 AM

args est un tableau de paramètres spécial de la méthode main en Java, utilisé pour obtenir un tableau de chaînes de paramètres de ligne de commande ou d'entrée externe. En accédant au tableau args, le programme peut lire ces arguments et les traiter selon les besoins.

Application de la technologie de l'intelligence artificielle dans les fonctions PHP Application de la technologie de l'intelligence artificielle dans les fonctions PHP May 01, 2024 pm 01:15 PM

La technologie IA a été combinée avec les fonctions PHP pour améliorer les fonctionnalités de l'application. Les applications spécifiques de l'IA incluent : l'utilisation d'algorithmes d'apprentissage automatique pour classer le texte, tels que Naive Bayes. Effectuez une analyse de texte approfondie à l’aide de techniques de traitement du langage naturel telles que la segmentation et la radicalisation des mots.

Comment trier les caractères chinois dans un environnement en langage C ? Comment trier les caractères chinois dans un environnement en langage C ? Feb 18, 2024 pm 02:10 PM

Comment implémenter la fonction de tri des caractères chinois dans un logiciel de programmation en langage C ? Dans la société moderne, la fonction de tri des caractères chinois est l’une des fonctions essentielles de nombreux logiciels. Que ce soit dans les logiciels de traitement de texte, les moteurs de recherche ou les systèmes de bases de données, les caractères chinois doivent être triés pour mieux afficher et traiter les données textuelles chinoises. En programmation en langage C, comment implémenter la fonction de tri des caractères chinois ? Une méthode est brièvement présentée ci-dessous. Tout d'abord, afin d'implémenter la fonction de tri des caractères chinois en langage C, nous devons utiliser la fonction de comparaison de chaînes. Couru

Quel impact les fonctions C++ ont-elles sur les performances du programme ? Quel impact les fonctions C++ ont-elles sur les performances du programme ? Apr 12, 2024 am 09:39 AM

L'impact des fonctions sur les performances du programme C++ comprend la surcharge des appels de fonction, la surcharge des variables locales et de l'allocation d'objets : La surcharge des appels de fonction : y compris l'allocation de trame de pile, le transfert de paramètres et le transfert de contrôle, ce qui a un impact significatif sur les petites fonctions. Surcharge d'allocation de variables locales et d'objets : un grand nombre de créations et de destructions de variables locales ou d'objets peuvent entraîner un débordement de pile et une dégradation des performances.

See all articles