正则表达式

 一、高效文本处理1

 张伟      13867376400  \n
    王伟     18490792248    \n
   王芳     14362790855  \n
  李伟     17554263700     \n
 王秀英   17891981424   \n
  李秀英    13221631168  \n
    李娜   15212577034    \n
 张秀英          17052075784    \n
   刘伟     13741357668  \n
   张敏        18976552131     \n
   李静       13478558927 \n
 张丽     14881568037  \n
 王静      17718534313    \n
    王丽       17377562607     \n
   李强       17994411487     \n
  张静     15263533786   \n
  李敏         15172933607 \n
   王敏  13555014022    \n
 王磊    18851784343    \n
    李军   14211211856   \n
   刘洋        15453200742    \n

1、提取所有 11 位数字电话号码

   \d{11}
 

2、提取所有 18 或 13 开头的电话号码

   (18|13)\d{9}    #我不明白这里为什么是9而不是10
 

3、提取所有“王”姓同学的名字

   王\S*  
 

4、提取所有“张”姓同学的电话号码

   (张\S*)*(\d{11})    $1 的电话是 $2  

5、重新排版

   (\S*) *(\d{11})    $1 - $2
 

 二、高效文本处理

 张伟        1994-3-22     王伟        1996-8-10   王芳   1999.2.28 
  李伟      1993年12月1日       王秀英        1991-11-23     李秀英      1993.2.4 
   李娜     1998年1月8日    
   张秀英          1993-11-17   
   刘伟     1996年9月11日     张敏         1999.5.28    李静   1991年7月13日   张丽      1991.2.2        王静     1990-9-6       王丽       1992.10.4      李强  1994.5.18   
  张静        1990-10-14      李敏       1997.5.12        王敏      1996-10-2  
 王磊  1999-8-15      李军  1992年11月4日       刘洋   1993-3-15  

 1、提取所有日期

  \d{4}\S\d{1,2}\S\d{1,2}\S?

2、提取所有 1996 年以前出生的学生

  (\S*)*199\d[0-5]\S\d{1,2}\S\d{1,2}\S?

3、重新排版

  (\S*)*(\d{4})\S\(d{1,2})\S\(d{1,2})\S?  $1:$2年 $3月 $4日

4、把所有 1996 年以前出生的学生出生年份改为 1996

  (\S*)*(199[0-5])\S\(d{1,2})\S\(d{1,2})\S?  $1:1996年 $3月 $4日

5、提取生日

  (\S*) *(\d{4})\S(\d{1,2})\S(\d{1,2})\S?        $1的生日是$3月$4号?

 

三、代码重构

def fib():
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))

def subfib(start, end):
    for cur in fib():
        if cur > end: return
        if cur >= start:
            print cur
            yield cur

def foo(a, b):
   return a + b

print 'fibonacci 10~100:'
print subfib(10, 100)

 

1、调整缩进,将四空格缩进重构为八个空格

  ^(\s+)  $1$1

2、重构 Python2 的 print 语法为 Python3 的 print() 函数

  print*(.*)$        print($1)

3、所有函数声明添加 func_ 前缀

  def*(.*)    def*func_$1

4、交换函数声明中的参数位置

  def (.*?)\((\w+), *(\w+)\)    def $1($3, $2)

5、为所有函数添加注释模板

  def*(.*):      def $1:   """    函数描述:    参数:    返回值:  """ 

三、数据格式验证

  下面的正则表达式都相当复杂,幸运的是你不需要记忆这些常用的正则表达式,需要时通过任何搜索引擎都能够找到。

1、邮箱验证

  ^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$

2、密码强度验证(最少八个字符,至少一个大写字母,一个小写字母和一个数字)

  ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^\n]{8,}$

3、18 位身份证号验证

  ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

4、IP 地址验证

  ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

5、手机号验证

  ^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$

 

四、网络爬虫

  1、提取所有 HTML 标签

  <("[^"]*"|'[^']*|[^"'>])*>

  2、清洗所有HTML标签

  <("[^"]*"|'[^']'|[^'''>])*>

  3、提取所有URL

  (https?|ftp|file)(:/)?/[-A-Za-z0-9+&@#/%=~_|]

  4、提取所有JPG图片的URL

  (https?|ftp|file)(:/)?/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|].jpg

  5、提取所有中文和中文标点

  [\u4e00-\u9fa5\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]+

  

 

  

 

  

 
 

 

 

 

 

转载于:https://www.cnblogs.com/start20180703/p/10404647.html

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值