首页 > 编程知识 正文

Python正则逆向

时间:2023-11-20 20:15:43 阅读:302204 作者:XXKW

本文将从多个方面对Python正则逆向进行详细阐述,并提供相应的代码示例。

一、正则表达式基础

1、正则表达式的作用

正则表达式是一种强大的文本匹配工具,可以用来匹配、替换和提取文本中的特定模式。在Python中,可以使用re模块来实现正则表达式的相关操作。


import re

# 示例1:匹配手机号码
phone_numbers = ['12345678901', '13912345678', '110']
pattern = r'^1[3-9]d{9}$'
for number in phone_numbers:
    if re.match(pattern, number):
        print(f'{number}是一个合法的手机号码')
    else:
        print(f'{number}不是一个合法的手机号码')

2、常用的正则表达式元字符

在正则表达式中,有一些特殊的元字符具有特殊的含义,常用的元字符包括:


.      匹配任意字符(除换行符外)
w     匹配字母、数字或下划线
d     匹配数字
s     匹配任意空白字符
^      匹配字符串的开始位置
$      匹配字符串的结束位置
[]     匹配括号内的任意一个字符
      转义字符,用于匹配特殊字符

二、正则表达式高级用法

1、贪婪匹配与非贪婪匹配

在默认情况下,正则表达式会尽可能多地匹配字符串,这种匹配方式被称为贪婪匹配。如果想要匹配最短的字符串,则可以使用非贪婪匹配。


import re

# 示例2:贪婪匹配与非贪婪匹配
string = 'hello world'
pattern = r'h.*o'
match_obj = re.match(pattern, string)
print(match_obj.group())  # 输出:hello

pattern = r'h.*?o'
match_obj = re.match(pattern, string)
print(match_obj.group())  # 输出:hello

2、分组和引用

正则表达式中使用括号可以对模式进行分组,并可以通过数字来引用分组的内容。


import re

# 示例3:分组和引用
string = 'hello world'
pattern = r'(w+)s1'
match_obj = re.match(pattern, string)
print(match_obj.group())  # 输出:hello hello

三、逆向技术应用

1、爬虫中的正则表达式

在网络爬虫中,经常需要通过正则表达式从网页内容中提取需要的数据。


import re
import requests

# 示例4:使用正则表达式提取网页中的图片链接
url = 'https://www.example.com'
response = requests.get(url)
html = response.text
pattern = r''
links = re.findall(pattern, html)
print(links)

2、日志分析与提取

使用正则表达式可以方便地从日志文件中提取特定的信息。


import re

# 示例5:使用正则表达式提取日志中的IP地址
log = '192.168.0.1 - - [01/Jan/2022:08:00:00 +0800] "GET /index.html HTTP/1.1" 200 100'
pattern = r'd{1,3}.d{1,3}.d{1,3}.d{1,3}'
ip = re.search(pattern, log).group()
print(ip)  # 输出:192.168.0.1

以上是Python正则逆向的简单介绍和应用示例,希望能对读者有所帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。