• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IT-nose
博客园    首页    新随笔    联系   管理    订阅  订阅

python正则表达式

一、常用方法

1、re.match函数,re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

  语法:re.match(pattern, string, flags=0)

#!/usr/bin/python
# -*- coding: UTF-8 -*- 
 
import re
print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配

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!!"

2、re.search方法,re.search 扫描整个字符串并返回第一个成功的匹配

  语法:re.search(pattern, string, flags=0)

#!/usr/bin/python
# -*- coding: UTF-8 -*- 
 
import re
print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span())         # 不在起始位置匹配

#!/usr/bin/python
import re
 
line = "Cats are smarter than dogs";
 
searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

3、re.sub函数,re.sub用于替换字符串中的匹配项。

  语法:re.sub(pattern, repl, string, count=0, flags=0)

  参数:

  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为一个函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import re
     
    phone = "2004-959-559 # 这是一个国外电话号码"
     
    # 删除字符串中的 Python注释 
    num = re.sub(r'#.*$', "", phone)
    print "电话号码是: ", num
     
    # 删除非数字(-)的字符串 
    num = re.sub(r'\D', "", phone)
    print "电话号码是 : ", num
    
    repl 参数是一个函数
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import re
     
    # 将匹配的数字乘于 3
    def double(matched):
        value = int(matched.group('value'))
        return str(value * 3)
     
    s = 'A23G4HFD567'
    print(re.sub('(?P<value>\d+)', double, s))

  • 二、正则表达式修饰符 - 可选标志
    正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。
    多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志
    修饰符	描述
    re.I	使匹配对大小写不敏感
    re.L	做本地化识别(locale-aware)匹配
    re.M	多行匹配,影响 ^ 和 $
    re.S	使 . 匹配包括换行在内的所有字符
    re.U	根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
    re.X	该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
    

      

posted @ 2017-06-22 15:21  detanx_墨鼬漓  阅读(216)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3