正则表达式

正则表达式(Regular Expression):
  • 文本模式,包括普通字符和特殊字符(称为“元字符”)。
  • 使用单个字符串描述,匹配一系列匹配某个规则的字符串
  • 用于:数据验证,替换文本,提取子字符串


术语

  • 通配符 ?:匹配文件名中的0个或1个字符
  • 通配符 *  : 匹配文件名中零个或多个字符(扩大了找到的文件的数量)
  • 脚本 


示例

^[0-9]+abc$

  • ^ :匹配输入字符串的开始位置
  • [0-9]+ :匹配多个数字,[0-9]匹配单个数字,+匹配一个或多个数字
  • abc$ :匹配字母abc并以abc结尾,$为匹配输入字符串的结束位置
  • 用户注册表单:用户名只允许包含字符,数字,下划线和连接字符(-),并设置用户名长度
  • ^[a-z0-9_-]{3,15}$      #3~15个字符的长度


re模块(使python语言拥有全部的正则表达式功能

  1. re.match(pattern,string,flags=0)      只匹配字符串的开始                               pattern:匹配的正则表达式;string:要匹配的字符串;flags:标志位
  2. re.search(pattern,string,flags=0)  扫描整个字符串并返回第一个成功的匹配
  3. re.sub(pattern,repl,string,count=0,flags=0)  替换字符串中的匹配项                             repl:要替换的字符串(可为函数      count:替换最大次数。默认0替换所有的匹配
  4. re.compile(pattern[,flags])   用于编译正则表达式,生成正则表达对象,供match() search()使用 返回RegexObject对象
  5. re.finditer()  与findall【返回列表】类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
  6. re.split()   按照能够匹配的子串将字符串分割后返回列表        # 对于一个找不到匹配的字符串而言,split 不会对其作出分割


re.匹配模式:

  • re.I     忽略大小写
  • re.M   多行模式
  • re.L     表示特殊字符集,依赖于当前环境
  • re.S     即为并且包括换行符在内的任意字符(. 不包括换行符)
  • re.U     表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
  • re.X     忽略空格和 # 后面的注释,增加可读性


'''
    re.M | re.I   :
    r'(.*)  (.*?) .*'   都是啥呢??
'''

line = "Cats are smarter than dogs"
 
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

'''
输出结果:
matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter
'''复制代码

返回方法:

  1. group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group()group(0)
  2. start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;
  3. end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;
  4. span([group]) 方法返回 (start(group), end(group))



 


#3.21.19.02:13

记一下正则表达式的方法和模式,基本了解python中re模块包含的主要功能

跟着敲了部分代码,没有码进笔记,下次看不懂再Google好了

第一篇正式的笔记,有点儿杂乱。


转载于:https://juejin.im/post/5c92630de51d4512e4086791

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值