Powiedz, że chcę dopasować znak "słowo" (\w
), ale wyklucz "_" lub dopasuj znak odstępu (\s
), ale wyklucz "\ t". Jak mogę to zrobić?Jak mogę wykluczyć niektóre postacie z zajęć?
22
A
Odpowiedz
36
Użyj zanegowanej klasy zawierającej \ W lub \ 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 Tą technikę nazywam [podwójnie negatywną] (http://stackoverflow.com/questions/3469080/match-whitespace-but-not-newlines-perl/3469155#3469155). –
Z korzyścią dla innych, którzy mogą używać Java, .NET, schematu XML lub JGSoft/RegexBuddy istnieje faktycznie mechanizm charakter odejmowanie dla tych smaków: http://stackoverflow.com/questions/3201689/character-class-odejmowanie-konwertowanie-z-java-składnia-do-regexbuddy; na przykład '[a-z- [aeiou]]' w .NET dopasowuje małą spółgłoskę. – polygenelubricants