练习1_re模块
1. re.search(pattern, string, flags=0)
-
作用:在字符串中搜索匹配的模式,找到第一个匹配后返回一个
Match
对象,如果没有找到匹配,则返回None
。 -
示例
import re result = re.search(r'\d+', 'hello 123 world') print(result.group()) # 输出: 123
2. re.match(pattern, string, flags=0)
-
作用:与
search()
类似,但是它只匹配字符串的开始。如果字符串的开始不符合模式,则返回None
。 -
示例
result = re.match(r'\d+', '123 hello world') print(result.group()) # 输出: 123
3. re.findall(pattern, string, flags=0)
-
作用:返回字符串中所有与模式匹配的非重叠匹配项的列表。
-
示例
results = re.findall(r'\d+', 'hello 123 world 456') print(results) # 输出: ['123', '456']
4. re.finditer(pattern, string, flags=0)
-
作用:返回一个迭代器,产生所有匹配的
Match
对象。 -
示例
for match in re.finditer(r'\d+', 'hello 123 world 456'):print(match.group()) # 分别输出: 123 和 456
5. re.sub(pattern, repl, string, count=0, flags=0)
-
作用:用
repl
替换string
中所有匹配pattern
的部分,返回替换后的字符串。count
参数可以指定最大替换次数。 -
示例
new_string = re.sub(r'\d+', 'number', 'hello 123 world 456') print(new_string) # 输出: hello number world number
6. re.subn(pattern, repl, string, count=0, flags=0)
-
作用:与
sub()
相同,但是返回一个元组,包含替换后的字符串和替换的次数。 -
示例
new_string, n = re.subn(r'\d+', 'number', 'hello 123 world 456') print(new_string) # 输出: hello number world number print(n) # 输出: 2
7. re.split(pattern, string, maxsplit=0, flags=0)
-
作用:根据模式对字符串进行分割,返回一个列表。
maxsplit
参数可以指定最大分割次数。 -
示例
parts = re.split(r'\s+', 'hello world') print(parts) # 输出: ['hello', 'world']
8. re.compile(pattern, flags=0)
-
作用:编译正则表达式模式为正则表达式对象,这样可以在后续的操作中复用这个对象,提高效率。
-
示例
pattern = re.compile(r'\d+') result = pattern.search('hello 123 world') print(result.group()) # 输出: 123
以上就是关于re
模块中一些常用方法的简介和示例,希望对您有所帮助。如果您有任何具体的问题或需要进一步的帮助,请随时提问!
练习2_排序
flag.txt
├── 课时6混淆一句话木马编写.mp4
├── 课时15awd_web题目(python)复盘(二).mp4
├── 课时13awd_web题目(jsp)复盘(一).mp4
├── 课时4awd批量一句话写入木马.mp4
├── 课时8awd攻防平台搭建部署.mp4
├── 课时10awd_web题目(php)复盘(二).mp4
├── 课时5awd批量获取flag.mp4
├── 课时9awd_web题目(php)复盘(一).mp4
├── 课时12awd_web题目(php)复盘(四).mp4
├── 课时2awd恶意程序利用脚本编写.mp4
├── 课时7awd不死马权限维持及变种.mp4
├── 课时11awd_web题目(php)复盘(三).mp4
├── 课时14awd_web题目(python)复盘(一).mp4
├── 课时3awd一句话木马利用解析.mp4
├── 课时1awd比赛那些事.mp4
exp1
import re
def sort123(filename): #(5)+好不要忘记掉了,要不然只会匹配一个match=re.search(r'课时(\d+)',filename) #2.直接定位到课时和后面的数字if match:return int(match.group(1)) #1.不将它转换为正整数的话,他12这些会当作1else:return float('inf')
with open('flag.txt','r',encoding='utf-8') as f: #3.记得加一下编码lines=f.readlines()
lines =[line.strip() for line in lines]sorted_lines=sorted(lines,key=sort123) #4.sorted方法,就是升序排序with open('flag_1.txt','w',encoding='utf-8') as f:for line in sorted_lines:f.write(line+'\n')
for lines in sorted_lines:print(lines)
官方exp
import re
def sort_by_lesson_number(file_name):# 使用正则表达式匹配课时号match = re.search(r'课时(\d+)', file_name)if match:return int(match.group(1)) #1.不将它转换为正整数的话,他12这些会当作1else:return float('inf') # 如果没有找到课时号,则将其放在列表末尾
# 从文件中读取数据
with open('flag.txt', 'r', encoding='utf-8') as file:lines = file.readlines()
# 去除每行末尾的换行符
lines = [line.strip() for line in lines]
# 按照课时号排序
sorted_lines = sorted(lines, key=sort_by_lesson_number)
# 将排序后的结果写入新的文件
with open('flag_output.txt', 'w', encoding='utf-8') as output_file:for line in sorted_lines:output_file.write(line + '\n')
# 打印排序后的结果(可选)
for line in sorted_lines:print(line)
├── 课时1awd比赛那些事.mp4
├── 课时2awd恶意程序利用脚本编写.mp4
├── 课时3awd一句话木马利用解析.mp4
├── 课时4awd批量一句话写入木马.mp4
├── 课时5awd批量获取flag.mp4
├── 课时6混淆一句话木马编写.mp4
├── 课时7awd不死马权限维持及变种.mp4
├── 课时8awd攻防平台搭建部署.mp4
├── 课时9awd_web题目(php)复盘(一).mp4
├── 课时10awd_web题目(php)复盘(二).mp4
├── 课时11awd_web题目(php)复盘(三).mp4
├── 课时12awd_web题目(php)复盘(四).mp4
├── 课时13awd_web题目(jsp)复盘(一).mp4
├── 课时14awd_web题目(python)复盘(一).mp4
├── 课时15awd_web题目(python)复盘(二).mp4