基础知识点
通配符 含义 示例 匹配结果 reg1 | reg2 匹配表达式reg1或者表达式reg2 foo | bar bar . 匹配除\n以外的任意字符 ab.b abdb ^ 匹配字符串起始部分 $ 匹配字符串终止部分 * 匹配0次或多次前面出现的正则表达式 + 匹配一次或多次前面出现的正则表达式 ? 匹配0次或1次前面出现的正则表达式 {m,n} 匹配m~n次前面出现的正则表达式 [abc] 匹配中括号内任意一个字符,结果可能是a或b或c [x-y] 匹配x~y范围中的任意单个字符 [^x-y] 不匹配x~y范围中的任意单个字符 (*|+|?|{})? 匹配上面频繁出现符号的非贪婪版 (*|+|?|{})? ({}) \d 匹配任何十进制数字 \w 匹配任何字母数字字符,相当于类[a-zA-Z0-9_] \s 匹配任何空格字符,它相当于类[\t\n\r\f\v] \b 匹配任何单词边界 \ 1.反斜杠后边跟元字符去除特殊功能;(即将特殊字符转义成普通字符),2.反斜杠后边跟普通字符实现特殊功能;(即预定义字符),3.\2引用序号对应的字组
正则匹配模式表
标志 含义 re.I(IGNORECASE) 使匹配对大小写不敏感 re.S(DOTALL) 使.匹配包括换行在内的所有字符 re.L(LOCALE) 做本地化识别(locale-aware)匹配,法语等 re.M(MULTILINE) 多行匹配,影响^和$ re.X(VERBOSE) 该标志通过给予更灵活的格式以便将正则表达式写得更易于理解 re.U 根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B
re模块常用方法
re.search(pattern, string, flags) 使用可选标记搜索字符串中第一次出现的正则表达式模式。如果匹配成功,则返回匹配对象,否则返回None
import re
m = re. search( 'foo' , 'asdasdfooasd' )
if m is not None :
print ( m. group( ) )
re.match(pattern, string, flags),从字符串起始位置开始匹配,若匹配失败,则返回None
import re
m = re. match( '(foo\w)(\w)' , "fooabwder" )
print ( m. group( 0 ) )
print ( m. group( 1 ) )
print ( m. group( 2 ) )
print ( m. groups( ) )
re.findall(pattern, string, flags)找出所有匹配的项,并以列表形式返回 re.finditer(pattern, string, flags)功能与上面findall一样,不过返回的时迭代器。
import re
m = re. findall( "foo\w" , "foosdfooefefeffoo2" )
print ( m)
re.split(pattern, string, max=0) 根据pattern将string分割成列表,并返回列表,分割操作max次 re.sub(pattern, newcontent, string,num,flags=0) 将匹配的内容替换成newcontent,替换num次
import re
str = "2005-2018 douban.com, all rights reserved 北京豆网科技有限公司"
m = re. sub( "\d{4}" , 'hi' , str , 1 )
print ( m)