Diese Frage ist ein gutes Beispiel dafür, warum Sie immer den Flavor von Regex, den Sie verwenden, angeben sollten. Die meisten Regex-Varianten bieten eine Möglichkeit, Wortgrenzen anzupassen, und die meisten verwenden dafür \b
. Gemäß this page können Sie mit wxRegEx einen von drei Varianten auswählen: BRE, ERE oder ARE. Von diesen unterstützt nur ARE Wortgrenzen, und es verwendet \y
, nicht \b
. Angenommen, Sie wxRE_ADVANCED
angeben, wenn Sie es kompilieren, wird diese regex beliebige Zeichenfolge übereinstimmen, die eines der Wörter enthält good
, better
oder best
:
\y(good|better|best)\y
Gemessen an den Beispielen der Sie, ich glaube, Sie verwirrend Regexes sein kann mit Klumpen. Beispiel: *.[ch]
ist der Glob, den Sie verwenden würden, um Dateinamen mit .c
oder .h
abzugleichen; die Regex dafür wäre \.[ch]$
. Es gibt ein gutes Regex-Tutorial auf der Seite, mit der ich früher verlinkt habe, aber der Unterschied, der mir am meisten am Herzen liegt, ist, dass eine Regex nicht die gesamte Zeichenfolge beschreiben muss, wie es ein Glob tut. Deshalb musste ich den Regex nicht mit .*
starten, aber ich tat müssen $
am Ende hinzufügen, um es von übereinstimmenden Zeichenfolgen wie foo.cs
oder bar.html
zu halten.
http://rubular.com/r/UahBdaQNhi? – marcog
@marcog das ist eine großartige Ressource, danke! Warum funktioniert '\ b (gut | besser | am besten) \ b' dort, aber nicht in wxRegEx? –
Eine andere nette Ressource: http://www.regexguru.com/2008/04/wxregex-class-in-wxwidgets/ –