python-网络安全编程第三天(正则表达式)

Posted 笑花大王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-网络安全编程第三天(正则表达式)相关的知识,希望对你有一定的参考价值。

 

python 正则表达式

正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

用法

match()

re.match()尝试从字符串的其实位置匹配一个模式匹配失败返回none
语法:re.match(pattern,string,flags=00)
pattern 匹配的正则表达式
string 要匹配的字符串
flags 标志位,控制正则表达式的匹配方式

1 import re
2 #在起始位置匹配
3 print(re.match(\'www\',\'www.baidu.com\').span())
4 #不再起始位匹配
5 print(re.match(\'com\',\'www.baidu.com\'))

group(num=0)匹配整个表达式的字符串
groups() 返回一个包含所有小组字符串的元组

 1 #!/usr/bin/python
 2 import re
 3 line = "Cats are smarter than dogs"
 4 matchObj = re.match( r\'(.*) are (.*?) .*\', line, re.M|re.I)
 5 if matchObj:
 6    print "matchObj.group() : ", matchObj.group()
 7    print "matchObj.group(1) : ", matchObj.group(1)
 8    print "matchObj.group(2) : ", matchObj.group(2)
 9 else:
10    print "No match!!

re.search()

re.search()方法扫描整个字符串并返回第一个成功的匹配
函数语法:re.search(pattern,string,flags=0)
剩下和上面的re.match用法一致

re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

compile()
compile()编译正则表达式模式,返回一个对象模式
格式:re.compile(pattern,flags=0)
pattern:一个字符串形式的正则表达式
flags:可选
re.I 忽略大小写
re.L 表示特殊字符集 \\w, \\W, \\b, \\B, \\s, \\S 依赖于当前环境
re.M 多行模式
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U 表示特殊字符集 \\w, \\W, \\b, \\B, \\d, \\D, \\s, \\S 依赖于 Unicode 字符属性数据库
re.X 为了增加可读性,忽略空格和 # 后面的注释

1 import re
2 tt = "Tina is a good girl, she is cool, clever, and so on..."
3 rr = re.compile(r\'\\w*oo\\w*\')
4 print(rr.findall(tt))   #查找所有包含\'oo\'的单词
5 执行结果如下:
6 [\'good\', \'cool\']


findall()
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
格式:re.findall(pattern, string, flags=0)
eg:

1 import re
2 p = re.compile(r\'\\d+\')
3 print(p.findall(\'xiaohua2020jintian1yue9ri\'))
4 
5 #执行结果:[\'2020\', \'1\', \'9\']

 


finditer()
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。

split()
按照能够匹配的字串将string分割后返回列表
格式:re.split(pattern,string[,maxsplit])
eg:

1 #按照/d+来匹配分割
2 import re
3 print(re.split(\'\\d+\',\'xiaohuadawang123huahua2020 niubi\'))
4 #代码执行结果:[\'xiaohuadawang\', \'huahua\', \' niubi\']

 

sub()
使用re替换string中每一个匹配的子串后返回替换后的字符串
re.sub(pattern,repl,string,count)
eg:

1 #\\s+匹配 空格部分替换成-
2 import re
3 text="xiaohuadawang from yulinxueyuan xinxianquanxiehui"
4 print(re.sub(r\'\\s+\',\'-\',text))
5 #代码执行结果:
6 #xiaohuadawang-from-yulinxueyuan-xinxianquanxiehui

subn()
返回替换次数
格式:subn(pattern, repl, string, count=0, flags=0)

正则表达式对象
start()返回匹配开始的位置
end返回匹配结束的位置
span()返回一个元组包含匹配(开始,结束)的位置

简单应用

import requests
import re

url=\'http://jandan.net/pic/MjAyMDAxMjAtMTM4#comments\'
headers={}

r=requests.get(url=url)

imgs=re.findall(\'<img src="(.*?)" /></p>\',r.content)

print(imgs)
for img in imgs:
    print(img)

参考学习:
https://www.cnblogs.com/tina-python/p/5508402.html
https://www.runoob.com/python/python-reg-expressions.html

以上是关于python-网络安全编程第三天(正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章

社区共读《Python编程从入门到实践》第三天阅读建议

JavaScript学习第三天(Math对象以及正则表达式)

Python学习第三天(面向对象编程)01

python正则表达式写[强口令检测]

自学Python编程的第三天----------来自苦逼的转行人

Python学习第三天