正则表达式是可匹配文本片段的模式,说直白点就是利用它在一个文本中得到你想要的内容。
通配符(.)
句点可以与除换行符外的其它字符都匹配,但是只能匹配一个对应的字符。例如正则表达式'.ython'与'python'或'jython'都匹配,但是与'ppython'不匹配。
转义字符(\)
考虑这种情况'python.org',它同样与'pythonzorg'匹配,但这显然不是我们想要的结果,此时就需要转义字符'\',转义字符的作用是使特殊字符的行为与普通字符一样,因此示例可以写成'python\.org',此时只与'python.org'匹配。
字符集([])
就是使用方括号将一个子串括起,这样的字符集与其包含的字符都匹配,请注意它也是只能匹配一个字符。例如'[0-9]'与0-9的任何一个数字都匹配,如果想要排除字符集,可以在开头添加一个^字符,例如'[^abc]'与除了a、b和c的任何字符都匹配。
管道字符(|)
管道字符是表示二选一的特殊字符,例如只想匹配'python'或'perl',就可以写成'python|perl',有时候只想将管道字符应用于模式的一部分,可以将这部分写到圆括号里面。对于前面的示例,可以重写成'p(ython|erl)'。
可选模式和重复模式(?、*、+、{m,n})
(pattern)? 表示pattern可以重复出现0次或1次
(pattern)* 表示pattern可以重复出现0次、1次或多次
(pattern)+ 表示pattern可以重复出现1次或多次
(pattern){m,n} 表示pattern可以重复m~n次
字符串的开头和末尾(^、$)
如果想确定字符串的开头是否与'http'匹配可以写成'^http',它与'http://python.org'匹配。
如果想确定字符串的结尾是否与'org'匹配可以写成'$org',它与'http://python.org'匹配。