Этот вопрос является хорошим примером того, почему вы всегда должны указывать вкус регулярного выражения, которое вы используете. Большинство разновидностей регулярных выражений обеспечивают способ соответствия границ слов, и большинство из них используют для этого \b
. Согласно this page, wxRegEx позволяет выбрать один из трех вариантов: BRE, ERE или ARE. Из них только ARE поддерживает границы слов и использует \y
, а не \b
. Предполагая, что вы задаете wxRE_ADVANCED
при компиляции, это регулярное выражение будет соответствовать любой строке, которая содержит одно из слов good
, better
или best
:
\y(good|better|best)\y
Судя по примерам, которые вы использовали, я думаю, вы можете быть запутанными регулярными выражениями с шарики. Например, *.[ch]
- это глобус, который вы используете для сопоставления имен файлов, заканчивающихся .c
или .h
; регулярное выражение для этого будет \.[ch]$
. На сайте, на котором я связан ранее, есть хорошее учебное пособие по регулярному выражению, но разница, с которой я больше всего беспокоюсь, заключается в том, что регулярное выражение не должно описывать всю строку, как это делает glob. Вот почему мне не нужно было запускать регулярное выражение с .*
, но я сделал, чтобы добавить $
в конец, чтобы он не соответствовал строкам вроде foo.cs
или bar.html
.
http://rubular.com/r/UahBdaQNhi? – marcog
@marcog это отличный ресурс, спасибо! Почему '\ b (good | better | best) \ b' работает там, но не в wxRegEx? –
Другой приятный ресурс: http://www.regexguru.com/2008/04/wxregex-class-in-wxwidgets/ –