Ich versuche mit Go eine Möglichkeit zu finden, ein Muster mit regexp.Regexp
abzugleichen.
Die Kriterien für den Wettbewerb sind wie folgt:
FooBar
或其子字符串 Foo
am Anfang der Zeile übereinstimmen oder überhaupt nicht. S+
)Es sollte also zum Beispiel passen:
FooABC
FooBarABC
FooBar
(da keine weiteren Zeichen dahinter stehen) ABC
(因为它不是以 Foo
)Ich habe verschiedene Ausdrücke ausprobiert, kann sie aber scheinbar nicht verstehen.
Ich habe festgestellt, dass es in anderen Implementierungen einen negativen Lookahead-Modus gibt, aber Go scheint ihn nicht bereitzustellen. Gibt es eine andere Möglichkeit, dieses Problem zu lösen?
Siehe (aktualisiert): https://regex101.com/r/SWSTzv/3
Ich weiß, dass dies offensichtlich ohne die Verwendung von regexp
gelöst werden kann. Der Zweck dieser Anfrage besteht jedoch darin, zu verstehen, ob dieses Problem durch die stdlib-Implementierung von Go gelöst werden kann. regexp
的情况下解决。然而,这个请求的目的是了解这个问题是否可以通过 Go 的 stdlib 实现来解决。
为什么不直接反转与正则表达式 ^Foo(?:Bar)?$
^Foo(?:Bar)?$
entspricht (na ja, nicht nur )?
package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`^Foo(?:Bar)?$`) str := `Foo FooBar FooA FooB FooBa FooBax FooBxr FooBarAbc FooBarFoo ABC AbcFooBar` for _, s := range strings.Split(str, "\n") { if strings.HasPrefix(s, "Foo") && !re.MatchString(s) { fmt.Println(s) } } }
<code>FooA FooB FooBa FooBax FooBxr FooBarAbc FooBarFoo </code>
Probieren Sie es auf rextester aus.
Update em>
Eine weitere basierend auf regulären Ausdrücken und der Verwendung von
package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`^Foo$|^FooBar$|^(Foo.+)`) str := `Foo FooBar FooA FooB FooBa FooBax FooBxr FooBarAbc FooBarFoo ABC AbcFooBar` for _, s := range strings.Split(str, "\n") { submatches := re.FindStringSubmatch(s) if submatches != nil && submatches[1] != "" { fmt.Println(submatches[1]) } } }
Das obige ist der detaillierte Inhalt vonGo Regexp: Übereinstimmung mit dem vollständigen Wort oder der Teilzeichenfolge oder überhaupt nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!