python 之re模块(正规表达式)简单扯一下犊子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#re模块 正规表达式

import re

#match函数和search函数
‘‘‘
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
参数描述:
pattern    匹配的正则表达式
string    要匹配的字符串。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法描述:
group(num=0)    匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()    返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
‘‘‘
‘‘‘
res1 = re.match(‘\d+‘,‘ddhfs33y98y392chhdf‘)    
res2 = re.search(‘\d+‘,‘dasdjkhf7fn84857fjg749‘) 

if res1:
    print res1.group()
else:
    print ‘no‘

if res2:
    print res2.group()
else:
    print ‘no‘
‘‘‘

‘‘‘
区别:
match从起始位置开始匹配,只从开头开始找,没有的话返回none
search整个内容里去匹配,放眼于整个字符串查找,直到找到为止,找到了就返回一个对象
‘‘‘

#findall函数
res3 = re.findall(‘\d+‘,‘99dad97765554dadaddd111222dfe333da444dadad555666‘)

#print res3

‘‘‘
findall的作用:
只要和表达式相匹配的都拿过来,会一直找,找到所有的
‘‘‘

#compile函数 作用:编译表达式
com = re.compile(‘\d+‘) #编译表达式后生成一个对象
#print com.findall(‘99dad97765554dadaddd111222dfe333da444dadad555666‘)

‘‘‘
如果用同样的表达式去匹配100次不同的字符串,
那么这种方式就是先编译一次,去查找100次,编译表达式这种方式效率更高
‘‘‘

#小粒子2
#目标:在这段悲催的字符中找出IP地址
#知识点:正规表达式 "\d" 代表一个数字,{1,3}代表出现1-3次
ips = ‘12.34.43.ddsd.dwdda.ddad.rfaw+87dd192.168.32.43_hfshfsh.887fsdf‘
com = re.compile(‘\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}‘)
ip = com.findall(ips)
print ip

#小粒子2
#目标:要求你填写的QQ号必须为5位到12位数字
#知识点: ”^“匹配字符串的开始,”$“匹配字符串的结束,{6,12}代表必须重复最少6次,最多12次,否则都不匹配。
#也就是说,您输入的QQ号码必须是不能少于6位,不能大与12位,否则出错
def check_nums(qq):
    com = re.compile(‘^\d{6,12}$‘)
    qqs = com.findall(qq)
    if len(qqs) == 0:
        print ‘您输入的QQ号位数有误‘
    else:
        print ‘您的QQ号已受理‘

check_nums(‘996298929‘)

‘‘‘
那么关于正规表达式的学习,下面推荐一个学习教程:http://deerchao.net/tutorials/regex/regex-1.htm
但这个教程仅仅只是入门而已。那么,平时在工作中用到的时候,不懂的在百度或翻墙到google查一查即可。
‘‘‘
时间: 2024-08-10 21:12:37

python 之re模块(正规表达式)简单扯一下犊子的相关文章

python中logging模块的一些简单用法

用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所以Python引入了logging模块来记录我想要的信息.print也可以输入日志,logging相对print来说更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息. 1.日志级别 import logging # 引入logging模块 # 将信息打印到控制台上 loggin

Python 使用Socket模块编写一个简单的服务器和客户端

任务 Socket套接字开始监听后,使用accept函数来等待客户连接.这个过程在循环中无限循环,服务器处理完和客户端的连接后会再次调用accpet函数,等待下一个连接. 客户端代码 1 import socket 2 s1=socket.socket() 3 s1.bind(("127.0.0.1",2345)) 4 s1.listen(5) 5 while 1: 6 conn,address = s1.accept() 7 print("a new connect fro

Python 使用Scapy模块编写一个简单的扫描端口是否过滤

代码 1 from scapy.all import IP,TCP,sr 2 ans,unans=sr(IP(dst="192.168.1.128")/TCP(dport=[21,23,135,443,445],flags="A"),timeout=3) 3 for s,r in ans: 4 if s[TCP].dport == r[TCP].sport: 5 print(str(s[TCP].dport)+" is unfiltered")

使用Python的turtle模块画出简单的柱状图

代码如下: import turtle heights = [856, 420,360,260,205] def main(): t = turtle.Turtle() t.hideturtle() for i in range(5): drawFilledRectangle(t,-200+(76*i),0,76,heights[i]/4,"black","light blue") displayText(t) def drawFilledRectangle(t,x

linux下python调用c模块

在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以helloWorld.c 和 main.py 做一说明:   (1)编写C代码,hello.c代码很简单,只是输出“Hello World!”:         (2)将编写的C代码编译成动态链接库的形式,具体命令:   此时在当前目录下就生成了libhello.so 的动态链接库:         (3)在main.py中导入动态链接库,并调用C函数 这里的ctypes是Pytho

python高级编程之生成器表达式和itertools模块

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #生成器表达式和itertools模块 #yield 中可以使用圆括号代替中括号 iter0=(x**2 for x  in range(10)if x%2==0) for iter1 in iter0: print iter1 #结果 """ 0 4 16 36 64 """ #这样的表达式被称为生成器或者gene

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

python lambda表达式简单用法【转】

python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>>3 当然,你也可以这样使用: lambda x:x+1(1) >>>2 可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: 1 def g(x):2 return x+1 非常容易理解,在这里lambda简化了函数定义

python模块与包简单整理

# 模块# collections模块# 1.namedtuple:生成可以使用名字来访问元素内容的tuple# from collections import namedtuple# namedtuple('名称', [属性list]):# from collections import namedtuple# Point = namedtuple('Point', ['x', 'y'])# p = Point(1, 2) # 2.deque:双端队列,可以快速地从另外一侧追加和推出对象# f