正则表达式
正则表达式
用途:
需要在一段字符串中提取出来相应的信息时(比如数字,字符,符号等),可以根据信息的特点写成一个规则,利用这个规则去匹配字符串中的信息,并将其提取出来
含义:
字符串的匹配规则,本质上就是一个公式,利用公式去寻找信息
正则表达所用的语法,所用的方法:
re.match():从头开始匹配,只匹配到一个值就结束,如果第一个值与规则内的字符不匹配,便返回None
re.search():匹配包含,全局匹配,匹配到一个便返回
match和search方法都是返回obiect格式的,要拿取值需要用group()的方法,当匹配无值返回None时,group方法会报错
re.findall():全局匹配,并将满足规则的所有元素放到列表中并返回
re.split():re.split("pattern","替换符号",string),将分割的元素以列表的形式存储
正则常用的规则(字符串中有数字、字符、符号,有前后左右等特性,那就有相对应的规则去匹配这些内容和特性)
“ . ” :匹配任意字符,从头开始匹配,(\n符号除外)
“ ^ ” :匹配字符串是否是以^后面的字符开头。并将此字符返回
“ $ ”:匹配字符串是否是以$前面的字符结尾,并将此字符返回
“ * ” :匹配*前的字符0次或者多次,如果是ab*,则匹配a或ab,或者a后面跟着任意数量的b
“ + ” :匹配前一个字符1次或多次,如果是ab+,则匹配a后面跟着非零数量的b,不会单独匹配a
“ ? ” :匹配前一个字符1次或0次 如果是ab?,则会匹配a或者ab
“ { m }”:匹配前一个字符m次
“ {n,m}” :匹配前一个字符n到m次 #按m次来
“ | ” : 或的关系
“ \d ”:匹配数字 0~9
“ \D ” : 匹配非数字的字符
“ \w ”:匹配【A-Za-z0-9】
“\W” :匹配非【A-Za-z0-9】
“ \s ” :匹配空白字符
“ (........)” : 分组匹配,如 a = re.search("(?P<name>\d{3})(?P<name>\w{5})") 可以用a.groupdict()的方法转换成字典格式
“[ ]”:里面填内容,表示包含的意思
“[ ^ ]”:里面加^符号表示不包含的意思
注:要匹配特殊字符时,在字符前面加上 \ (反斜杠)
标识符:
re.I:忽略大小写
re.M :多行模式,会自动检测出 \n(换行符)
re.S : 即为’ . ’并且包括换行符在内的任意字符(’ . ’不包括换行符)
re.X :为了增加可读性,忽略空格和’ # ’后面的注释