Python中正则匹配与中文的问题

在这里插入图片描述

笔者改写了一个爬虫,来爬取补天SRC的漏洞认领页面,将单位名称、漏洞名称、漏洞危害等级爬取下来,但是在正则匹配"漏洞名称"的过程中遇到了一些麻烦。

如上图,想要把"SQL注入漏洞"字符串正则匹配出来,根据常规思想,正则匹配表达式当然要这么写:

Bug_name = re.findall(‘<span>的一个(.*?)</span>.*?</dd>', r.text)

这种方法是不可行的,为什么呢???因为中文"的一个"是不被正则认可的。

于是尝试了各种方法,最后经过调试,使用以下语句进行匹配,成功!

Bug_name = re.findall(u'<span>\u7684\u4e00\u4e2a(.*?)</span>.*?</dd>', r.text)

记录下,以后少走弯路~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的正则表达式是一个重要的功能模块,可以用来匹配字符串,包括数字。正则表达式是一种描述字符模式的语言,可以识别出各式各样的字符串。在Python,可以使用re模块来进行正则表达式的操作。下面介绍一些常用的匹配字符串以及数字的正则表达式: 1. 匹配字符串 比如我们要匹配一个字符串"hello",可以使用以下代码: import re string = "hello my name is John" result = re.search("hello", string) print(result.group()) 输出的结果是:hello 上面的代码,re.search函数表示从字符串string查找是否有"hello"字符串,如果有则返回结果,否则返回None。result.group()函数表示返回查找的结果。 2. 匹配数字 匹配数字的正则表达式比较多,下面列举其一些: (1)匹配一个整数(不包括小数): import re string = "1234" result = re.search("\d+", string) print(result.group()) 输出的结果是:1234 上面的代码,\d+表示匹配数字,+号表示匹配1个或多个数字。result.group()函数表示返回查找的结果。 (2)匹配一个浮点数: import re string = "3.14" result = re.search("\d+(\.\d+)?", string) print(result.group()) 输出的结果是:3.14 上面的代码,\d+(\.\d+)?表示匹配整数加小数点加小数部分(小数部分可以没有),?表示小数部分可有可无。result.group()函数表示返回查找的结果。 总之,Python的正则表达式非常强大,在文本处理和数据探索应用广泛。掌握正则表达式的基础知识和常用方法,可以使我们的编程更加高效和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值