Sunday, August 15, 2010

Perl re: исключение символа из класса

При использовании регулярных выражений иногда требуется соответствие какому-то классу символов (w, d, s), за исключением одного или более символа из этого класса. Например, все whitespace-символы (s), кроме пробела. Как правило, в таких случаях используется перечисление оставшихся символов класса:
/[trnf]/

В качестве альтернативы можно использовать двойное отрицание:
/[^S ]/

что означает "не non-whitespace или не пробел", или, иными словами, "whitespace и не пробел". Этот вариант кстати по мнению Benchmark на 30% быстрее.

No comments:

Post a Comment