Heim > Artikel > Backend-Entwicklung > Python-Split-Funktionsäquivalent für reguläre Ausdrücke in Golang
Im Bereich der Programmierung sind reguläre Ausdrücke ein leistungsstarkes Werkzeug zum Abgleichen und Verarbeiten von Zeichenfolgen. In Python ist die Split-Funktion eine häufig verwendete reguläre Ausdrucksfunktion, mit der eine Zeichenfolge in Teilzeichenfolgen aufgeteilt wird. Entwickler, die Golang verwenden, fragen sich jedoch möglicherweise, wie sie in Golang dieselbe Funktionalität wie die Split-Funktion in Python erreichen können. In diesem Artikel stellt Ihnen der PHP-Editor Zimo vor, wie Sie die Aufteilungsfunktion für reguläre Ausdrücke in Golang äquivalent verwenden, um dieses leistungsstarke Tool besser zu nutzen.
Ich habe den folgenden Python-Code, der einem regulären Ausdruck entspricht::
import re digits_re = re.compile("([0-9ee.+]*)") p = digits_re.split("hello, where are you 1.1?") print(p)
Es gibt diese Ausgabe::
['', '', 'h', 'e', '', '', 'l', '', 'l', '', 'o', '', ',', '', ' '、''、'w'、''、'h'、'e'、''、''、'r'、'e'、''、''、' '、''、'a' , '', 'r', 'e', '', '', ' ', '', 'y', '', 'o', '', 'u', '', ' ', '1.1 ', '', '', '?', '', '']
Ich versuche, die obige Ausgabe mit golang
zu erhalten.
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) }
Ich erhalte die folgende Ausgabe::
[H l l o , w h r a r y o u ? ]
Ich denke, reguläre Ausdrücke sind sprachabhängig, daher hilft die in Python verwendete Funktion split()
nicht split()
函数对 golang
没有帮助。使用了 regexp
包中的多个 find*()
. Habe mehrere find*()
-Funktionen aus dem regexp
-Paket verwendet, konnte aber keine Funktion finden, die die Ausgabe des obigen Python-Programms liefern würde.
Das Ziel der Ausgabe eines String-Arrays besteht darin, Zeichen zu trennen, die nicht in float
konvertiert werden können, und wenn der String als Gleitkomma geparst werden kann, berechne ich den gleitenden Durchschnitt.
Zum Schluss kombiniere ich alles und präsentiere die Ausgabe wie einen Linux-Befehl watch
.
Benötigen Sie weitere Details/Hintergrundinformationen? Ich teile es gerne.
Vielen Dank für Ihre Hilfe!
In der Zwischenzeit habe ich etwas, das für meinen Anwendungsfall funktioniert. Es hat nicht genau das gleiche Format wie python
, enthält aber nicht die leere Zeichenfolge/das leere Zeichen.
Ich habe die Funktion split
和 findallstring
verwendet, um die gewünschte Ausgabe zu erhalten.
// 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]) }
Mit dem obigen Codeausschnitt erhalte ich so etwas wie ::
[H e l l o , w h e r e a r e y o u 1.1 ?]
Ich bin nicht sehr gut darin regex
und irgendwie funktioniert die obige Methode für meinen Anwendungsfall.
Um es etwas leichter zu formulieren: Ich habe meine Kollegen scherzen hören, dass, wenn man ein Problem mit regex
s Hilfe löst, man am Ende zwei Probleme haben wird! ! !
Das obige ist der detaillierte Inhalt vonPython-Split-Funktionsäquivalent für reguläre Ausdrücke in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!