10. python3中的正则表达式

何所谓正则表达式?个人理解就是文本搜索的一种规则。那么正则表达式就需要解决下面的问题

  • 规则如何表示
  • 规则如何使用

规则如何表示

序号 需求 表示
1 任意一个字符 (.)
2 任意一个字符在备选范围内(字符集) ([a-zA-Z0-9]),[^abc]
3 匹配开头 '^' (注意区别反转字符集2,没有放到中括号里面)
4 匹配结尾 '$'

如果需要匹配多个连续的字符,怎么办?那么就看连续的定义了,a) 如果只需要匹配('python','pear')两个单词,管道运算符就这么来了

序号 需求 表示
5 匹配不等长单词 管道运算符(|) ,'p(ython(|)ear)'

多个字符的另外一种情况就是重复模式

序号 需求 表示
6 0个或者多个t '(t)*'
7 只是一个t '(t)+'
8 指定数量m,n '(t){m,n}'

例子:匹配网址'www.jianshu.com', 'wwww.jianshou.com'等网址可以为
r'^(w){3,4}\.jiansh(u|ou)(.)+com$'
主要是希望在你使用的时候能够查询到这些。注意转义字符\\的使用


规则如何使用?

规则已然通过字符串的方式构建了,这种字符串中的特定符号代表了一系列已知或者未知的东东。那么如何使用这个字符串呢?python提供了re模块干这个事情,那么在深入之前,举个例子。老板让你找一个黑头发或者黄头发,年龄在16-20之间,罩杯在c和d之间的女模特,你会问什么问题呢?

  • 去哪儿找(大街上,模特公司,还是xx数据库)
  • 怎么找(方法很多哈)
  • 到底能不能找到(沙漠里估计就难找到这样的模特呀)
  • 找多少(一个还是都找到)
  • 找到了做什么(走秀表演,还是拍广告)
  • 怎么才能快速的找到(问问前辈,做过了的)

这么多的问题,re模块都给你解决了,对应模式的搜索

  • 去哪儿找(提供的字符串)
  • 怎么找(使用re模块)
  • 到底能不能找到(search下看看)
  • 找多少(findall 全给你,你自己决定)
  • 找到了做什么(分割字符串,替换)
  • 怎么才能快速的找到(compile一下)

你可能感兴趣的:(10. python3中的正则表达式)