字符组中的字符排列顺序不影响字符组的功能,出现重复字符也不会影响
[0123456789]== [9876543210] == [102299345678]
这样写比较复杂,正则表达式提供-范围表示法简化字符组
[0123456789] => [0-9]
Question:-范围表示法为啥要写作[0-9]而不是[9-0]??
在字符组中,’-’ 表示的范围一般是根据字符对应的码值来确定的,码值小的在前,大的在后。写作[9-0]就会出错
[0-9a-zA-Z]:匹配数字、小写字母、大写字母。
在程序中遇到特殊字符需要加’\’来转义,python中提供了原生字符串,正则表达式如何,原生字符串就是如何,不需要考虑正则表达式之外的转义形式如:r"string"
排除型字符组(Negated Character Class)
排除型字符组非常类似普通字符组,只是在方括号”[“之后紧跟一个“^”字符写作[^…] ,表示在当前位置,匹配一个没有列出的字符
如[^0-9]:表示匹配0-9之外的字符tips:排除型字符组必须要匹配一个字符
字符组简记法
\d == [0-9] # d代表数字digit
\D == [^0-9]
\w == [0-9a-zA-Z] #w代表单词字符word
\W == [^0-9a-zA-Z]
\s == [ \t\r\n\v\f] #s表示空白字符space
\S == [^ \t\r\n\v\f]
正则表达式有许多流派:
1. Perl衍生出来流派PCRE(Per Compatible Regular Expression) 本文案例
2. POSIX(Portable Operating System Interface for unix)