Python自学与资料分享

Python3.6:re模块详解

2018-01-07  本文已影响13人  james_chang

常用的正则表达式符号

1  '.'      # 默认匹配换行符(\n)之外的任意一个字符;flags=re.DOTALL(将换行符也匹配出来)
2  '^'      # 匹配字符串开头;flags=re.MULTILINE(如果开头为换行符或者其他特殊,可以从换行符后面开始匹配)
3  '$'      #匹配字符串结尾;flags=re.MULTILINE(如果字符串有换行符的话换行符前的字符也可以在行尾匹配)
4  '*'      #匹配*号前面的字符0次或者多次[0, +oo]
5  '+'      #匹配前一个字符1次或者多次[1, +oo]
6  '?'      #匹配前一个字符1次或者0次
7  '{m}'    #匹配前一个字符m次
8  '{n, m}' #匹配前一个字符n到m次
9  '|'      #匹配|左边或者|右边的字符
10 '(...)'  #匹配括号中的任意正则表达式

包含'\'的正则表达式特殊序列

 \d  #匹配任何十进制数:它相当于类[0-9]
 \D  #匹配任何非数字字符:它相当于[^0-9]
 \s  #匹配任何空白字符:它相当于类[ \t\n\r\f\v]
 \S  #匹配任何非空白字符:它相当于类[^ \t\n\r\f\v]
 \w  #匹配任何字母数字字符:它相当于类[a-zA-Z0-9]
 \W  #匹配任何非数字字母字符:它相当于[^a-zA-Z0-9]
 \b  #匹配一个单词边界,也就是指单词和空格间的位置

常用的语法

import re #放在文件头以下省略
re.findall     #把所有匹配的字符以元素的形式放入列表,返回一个列表                      
    print(re.findall('^a', '\nabc'))    #[]
    print(re.findall('^a', '\nabc', flags=re.MULTILINE))   #['a']
    print(re.findall('.', '\nabc'))    #['a', 'b', 'c']
print(re.findall('.', '\nabc', flags=re.DOTALL))   #['\n', 'a', 'b', 'c']

re.search      #查找字符串中于正则表达式匹配的第一个位置,返回相应的MatchObject实例,后缀 .group() 方法可以取得相应的str型值                           
    print(re.search('a', '\nabdgc ddaad'))  #<re.Match object; span=(1, 2), match='a'>
    print(re.search('a', '\nabdgc ddaad').group())  #a   #直接以字符出返回

re.sub         #将匹配到的字符替换
    print(re.sub('正则表达式', '用来替代的字符串', '字符串'))  #返回替换后的字符串                          
    print(re.sub('.', 'a', '\nabdgc ddaad'))  #aaaaaaaaaaa

re.split       #将匹配到的字符当做列表分隔符,将分隔开的元素放在列表中返回                                   
    print(re.split('abc', 'sldkleabcdklsabcd'))  #['sldkle', 'dkls', 'd']

re.match       #只在字符串开头位置开始匹配,返回MatchObject实例,使用.group()获取值                                 
    print(re.match('abc', 'sldkleabcdklsabcd'))  #None  #匹配不到返回None
    print(re.match('abc', 'abcabcsldkledklsabcd'))  #<re.Match object; span=(0, 3), match='abc'>
    print(re.match('abc', 'abcabcsldkledklsabcd').group())  #abc

#*,+,?都是贪婪匹配,也就是尽可能的匹配 后面加?使其变成惰性匹配

转义字符反斜杠

#   \   :反斜杠后边跟元字符去除特殊功能
#        反斜杠后面跟普通字符实现特殊功能(某些普通字符d、w、等)
#        在编程中想要匹配字符串中的'\'需要四个反斜杠'\\\\'因为编程语言将四个反斜杠变为两个,而正则表达式使用两个反斜杠来匹配这一个反斜杠
import re                              
print(re.findall('\\\\', 'sdas\dadas'))  #['\\'] #这里输出编程语言两个反斜杠相当于字符串中一个斜杠
上面等价于
print(re.findall(r'\\', 'sdas\dadas'))  #['\\']  #原生字符串

python自学技术互助扣扣群:670402334

上一篇下一篇

猜你喜欢

热点阅读