欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > python学习_4.正则表达式练习_1

python学习_4.正则表达式练习_1

2025/2/25 21:02:37 来源:https://blog.csdn.net/2301_80284843/article/details/143814902  浏览:    关键词:python学习_4.正则表达式练习_1

练习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

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词