2010-08-23 12 views
22

Supongamos que deseo hacer coincidir un carácter de "palabra" (\w), pero excluyo "_", o coincido con un carácter de espacio en blanco (\s), pero excluyo "\ t". ¿Cómo puedo hacer esto?¿Cómo puedo excluir algunos caracteres de una clase?

+3

Para el beneficio de otras personas que puedan estar usando Java, .NET, esquema XML, o JGsoft/RegexBuddy, no es en realidad un mecanismo de carácter sustracción de esos sabores: http://stackoverflow.com/questions/3201689/character-class-resta-conversion-from-java-syntax-to-regexbuddy; p.ej. '[a-z- [aeiou]]' en .NET coincide con una consonante en minúscula. – polygenelubricants

Respuesta

36

Utilice una clase negada que incluya \ W o \ 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 Llamo a esta técnica como [doble negativo] (http://stackoverflow.com/questions/3469080/match-whitespace-but-not-newlines-perl/3469155#3469155). –

Cuestiones relacionadas