2010-08-23 2 views
22

Скажем, я хочу совместить символ «слово» (\w), но исключить «_» или совместить символ пробела (\s), но исключить «\ t». Как я могу это сделать?Как я могу исключить некоторые символы из класса?

+3

В пользу других лиц, которые могут быть с помощью Java, .NET, XML-схемы или JGSoft/RegexBuddy, есть на самом деле механизм характер вычитания для этих ароматов: http://stackoverflow.com/questions/3201689/character-class-subtraction-conversion-from-java-syntax-to-regexbuddy; например '[a-z- [aeiou]]' в .NET соответствует строчному согласному. – polygenelubricants

ответ

36

Используйте класс с отрицанием, включая \ W или \ S.

/[^\W_]/ # anything that's not a non-word character and not _ 
/[^\S\t]/ # anything that's not a non-space character and not \t 
+4

+1 Я называю эту технику [double-negative] (http://stackoverflow.com/questions/3469080/match-whitespace-but-not-newlines-perl/3469155#3469155). –

Смежные вопросы