'.' 表示任何字符除了'\n'
'^' 表示以什么字符开头,eg:'^b' 以b开头
'$' 表示以什么字符结尾,eg:'b$' 以b结尾
'*' 匹配前面出现的正则表达式0次或者多次 eg: [A-Za-z0-9]*
'+' 匹配前面出现的正则表达式1次或者多次 eg: [a-z]+\.com
'.*' 配合使用表示匹配任意字符
'?' 匹配前面出现的re 0次或1次,是一种非贪婪匹配的模式(即从左边的字符串开始匹配的第一个)(总是尝试匹配尽可能少的字符)
'.*?' 配合用于非贪婪匹配模式
'()' 表示提取字符串的子串(即将括号内中的字符作为一个分组)
'(?P<name>)' 分组起别名 eg. re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.itcast.cn</h1></html>")
'(?P=name)' 引用别名为name分组匹配到的字符串
'{}' 表示限定前面那个字符出现的次数,eg:'a{2}' 表示限定a出现两次,如果写成'a{2,}', 匹配前一个字符至少出现m次
'{2,5}' 表示出现最少两次最多5次
'|' 表示或的意思(匹配左右任意一个表达式),eg:'ab|abc' 表示匹配ab或者abc即可,优先匹配前面的那段字符
'[]' 表示中括号里面的字符只要满足任意一个就行,eg:'[0-9]','[^1]'
'[^...]'不匹配此字符串集中出现的任何字符 eg: [^abc]
'\s' 表示匹配空白字符, eg. ' ', '\n', '\t', '\r' '\S'表示非空格
'\w' 等同于'[A-Za-z0-9_]' 同样'\W'表示不为小写w中的字符就匹配
'[\u4E00-\u9FA5]' 表示提取一个汉字
'\d' 表示匹配连续的数字, 即0-9
'\D' 匹配非数字, 即不是数字
'\b' 匹配单词边界(\B是\b的反义) eg: \bThe\b 即两边不能有其它字符
'\nn' 匹配已保存的子组 eg: price:\16
'\num' 引用分组num匹配到的字符 根据分组的num号 eg. re.match(r"<(\w*)><(\w*)>.*</\2></\1>", "<html><h1>www.itcast.cn</h1></html>")
'\c' 逐一匹配特殊字符c(即,取消它的特殊含义,按字面匹配) eg: \., \\, \*
正则表达式默认是贪婪匹配的(反向匹配,即从右边的字符串开始匹配的第一个)(贪婪匹配总是匹配前面尽可能多的字符)