美文网首页
正则表达式

正则表达式

作者: 转身为墙 | 来源:发表于2017-09-20 09:42 被阅读0次

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它‘匹配了’,否则,该字符串就是不合法的。

re模块
  • match()方法判断是否匹配,如果匹配成功,返回一个match对象,否则返回None。只能从字符串起始的位置去匹配
  • search()同match()方法, 但是会在整个字符串里去匹配,直到匹配到为止
import re
result1 = re.match('\d+','edvr4556t5gtbyh675454') 
print result1
if result1:
   print  result1.group()
else:
   print 'nothing'
result2 = re.search('\d+','edvr4556t5gtbyh675454') 
print result2
if result2:
   print result2.group()
else:
   print 'nothing'
#打印结果
None
nothing
<_sre.SRE_Match object at 0x01EF2918>
4556
#在字符串中用正则表达式\d+ 匹配数字,如果为真,返回匹配结果,否则返回nothing
  • findall()
    match()方法判断是否匹配,如果匹配成功,返回一个match对象,否则返回None。会在整个字符串中匹配,并且找到所有的
import re
result3 = re.findall('\d+','ed111vr4556t5g333tbyh675454') 
print result3
#打印结果
['111', '4556', '5', '333', '675454']
  • compile 编译,re模块内部会干两件事情
    1、编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
    2、用编译后的正则表达式去编译字符串。
    如果一个正则表达式要是重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配:
import re
com = re.compile('\d+')  #编译
result1 = com.findall('123wed44444kll3333')
print result1
result2 = com.match('4343ds9090fg321').group()
print result2
result3 = com.search('asd8888frs2222').group()
print result3
#打印结果:
['123', '44444', '3333']
4343
8888
  • 分组groups
    分组就是用一对圆括号“()”括起来的正则表达式,匹配出来的内容就表示一个分组。从正则表达式的左边开始看,看到第一个左括号“(”表示第一个分组,第二个表示第二个分组,以此类推,需要注意的是有一个全局分组(就是0),就是整个正则表达式。
import re
result2 = re.search('(\d+)asdfa(\d+)','as123asdfa335633sdeasdfdf')
print result2.group()
print result2.groups()   #groups只打印圆括号里的内容
#打印结果
123asdfa335633
('123', '335633')
  • 正则表达式的常用格式
    1、字符:
    \d :数字
    \w :下划线、数字、字符
    \t :制表符
    . :除了回车以外的所有字符
    2、次数:
    * 大于等于零
    + 大于等于1
    ?0或者1
    {m} 次数,m次
    {m,n} 范围,m到n之间的

  • 筛选IP,例子

import re
ip = '12.34.43.dsfa.345rs.354s~234sd389d+34f192.168.32.43_w342d~@#9436'
result1 = re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',ip)
print result1
result2 = re.findall('(?:\d{1,3}\.){3}\d{1,3}',ip)
print result2
#打印结果
['192.168.32.43']
['192.168.32.43']
  • 自学
    《正则表达式30分钟教程》

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/nqscsxtx.html