Wie schreiben Sie einfachen regex in golang?
Ich bin versucht, zu schreiben regexp liefert den substring in string beginnt mit Punkt und bis zum ersten Platz. Aber ich bin neu in regulären Ausdrücken, so habe ich versucht, etwas
und es funktioniert überhaupt nicht:
package main
import "fmt"
import "regexp"
func main() {
re := regexp.MustCompile("\\.* ")
fmt.Printf(re.FindString(".d 1000=11,12")) //Must return d
fmt.Printf(re.FindString("e 2000=11")) //Must return nothing or ""
fmt.Printf(re.FindString(".e2000=11")) //Must return nothing or ""
}
dieser code nur weiß 3 weiße Raum, in golang. Was mache ich falsch?
regexp.MustCompile("\\..*\\s")
für mich funktioniert, zumindest für deine Beispiele.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während
*
ist die wildcard in glob matching, es ist nicht die Platzhalter in regex. In regex -.
ist die wildcard und*
bedeutet Wiederholung 0 oder mehrmals. Sie wollen wahrscheinlich:gehen Spielplatz
Aber Sie möglicherweise feststellen, dass es auch wieder den Punkt und Raum. Sie können
FindStringSubmatch
und verwenden eines capture-Gruppe, um dieses Problem zu lösen, und Sie können backsticks, so dass Sie nicht haben, um doppelte escape Dinge:gehen Spielplatz
Obwohl, ich würde lieber mit
\S*
(passt nicht-Leerzeichen) anstelle von.*
um dieses match, denn es werden reduzieren das mögliche backtracking:gehen Spielplatz
Die ersten 2 Zeichen, die Sie schreiben
\\
bedeuten, dass man escaping-backslash, so dass Sie erwarten umgekehrten Schrägstrich als erstes Zeichen. Sie schreiben sollte^\..*?
statt:Non-greedy bedeutet, es wird halt auf den ersten Platz nicht bei der letzten