当前位置: 首页 > news >正文

摄影看图网站兄弟们给个能用的网站

摄影看图网站,兄弟们给个能用的网站,wordpress搭建博客,企业宣传片文案正则表达式:英文Regular Expression,是计算机科学的一个重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,re模块…

正则表达式:

英文Regular Expression,是计算机科学的一个重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,re模块就是我们python中关于正则表达式的第三方模块,它可以帮我们解决下面的问题:

检索:通过正则表达式,从字符串中获取我们想要的部分、匹配:判断给定的字符串是否符合正则表达式的过滤逻辑

很多语言都有正则表达式比如:Java javascript python php c c++........等等。

re模块中有很多函数?

re.compile()
re.match()
re.findall()
re.search()
re.sub()
re.split()

首先给大家讲一下这些函数的用法:

1.re.comiple(pattern,flags=0)

将常用的正则表达式编译成为一个正则表达式对象,函数本身并不具备特殊意义,需要搭配findall(), search(), match()等常用函数一起使用。

其中第一个参数 “pattern“为正则表达式,第二个参数“flags”编译标志位,用于扩展匹配字符的功能

import re
pattern = re.compile('^He\w+\s(\w+)\s\w+.(\w)+',re.S)
cont = '''Hello chaoxingerya World_This
is 12 345 6789 '''
value = pattern.match(cont)
print(value.group(1))

其中第一个参数为:'^He\w+\s(\w+)\s\w+.+(\w)+' 正则表达匹配式

符号:“^”表示从什么开始,题目中是以“He”开始,符号“\w”表示匹配大写英文字母,数字、下划线即:“a-zA-Z0-9_”,符号“+”表示 匹配前一个字符至少1次到n次,这两个字符组合在题目中用来表示:“llo”,符号“\s”表示匹配空格 也就是tab键,在题目中用来匹配“Hello“和 “chaoxingerya“之间的空格键,符号“(\w+)“,是由小括号“()”和“\+”组成,符号“()”的作用是将“()“中的字符作为⼀个分组,在后期可以通过value.group(1)将第一个分组中的内容“chaoxingerya”拿出来,符号“\s“用来匹配题目中“chaoxingerya”和 World_This之间的空格,\w+用来匹配"World_This",

符号点“ . ”用来匹配

'''Hello chaoxingerya World_This

is 12 345 6789 '''

之间的换行,符号“(\w)+“,用来匹配题目中“is”,其中剩余的数字我并没有对它进行匹配,如果没

第二个参数为:re.S 功能标志位,扩展正则字符的匹配

S :表示 . (点符号)在正则表达式中包括换行符在内的任意字符,也就是所有字符

  1. re.match(pattern,string)

pattern :匹配正则语法,可以单独写也可以有re.compile()编译的对象得来。

string 需要被匹配的字符串

并且与group搭配使用

总是从被匹配对象的第一个字符开始,如果匹配你到了第一个字符则继续往下匹配,如果第一个字符没有匹配得到则会报错

为了给大家讲清楚我直接搞了csdn一片文章的博客链接方便大家爬虫学习

import re
cont = '<a data-report-query="spm=1000.2115.3001.5927" data-report-click="{&quot;spm&quot;:&quot;1000.2115.3001.5927&quot;,&quot;dest&quot;:&quot;https://csdnnews.blog.csdn.net/article/details/129187745&quot;,&quot;extra&quot;:&quot;{\&quot;fId\&quot;:558,\&quot;fName\&quot;:\&quot;floor-www-index\&quot;,\&quot;compName\&quot;:\&quot;www-swiper\&quot;,\&quot;compDataId\&quot;:\&quot;www-headhot\&quot;,\&quot;fTitle\&quot;:\&quot;\&quot;,\&quot;pageId\&quot;:141}&quot;}" target="_blank" href="https://csdnnews.blog.csdn.net/article/details/129187745?spm=1000.2115.3001.5927" class="title" data-v-0045335f="">Linus 怒怼:请不要提交垃圾!</a>'
ret = re.match("^<a.*?([a-z]+://[a-z./0-9]+\?).*?>",cont)
print(ret.group(1))

我将这篇文章的链接所在的标签给你拿出来

<a data-report-query="spm=1000.2115.3001.5927" data-report-click="{&quot;spm&quot;:&quot;1000.2115.3001.5927&quot;,&quot;dest&quot;:&quot;https://csdnnews.blog.csdn.net/article/details/129187745&quot;,&quot;extra&quot;:&quot;{\&quot;fId\&quot;:558,\&quot;fName\&quot;:\&quot;floor-www-index\&quot;,\&quot;compName\&quot;:\&quot;www-swiper\&quot;,\&quot;compDataId\&quot;:\&quot;www-headhot\&quot;,\&quot;fTitle\&quot;:\&quot;\&quot;,\&quot;pageId\&quot;:141}&quot;}" target="_blank" href="https://csdnnews.blog.csdn.net/article/details/129187745?spm=1000.2115.3001.5927" class="title" data-v-0045335f="">Linus 怒怼:请不要提交垃圾!</a>

我需要其中在href中的链接地址:

https://csdnnews.blog.csdn.net/article/details/129187745

我写的正则匹配式为:

^<a.*?([a-z]+://[a-z./0-9]+\?).*?>

其中对符号解释如下:

符号:“^”表示从那个地方开始,"^<a" 表示从<a开始,符号“ [a-z]+“[]是定义匹配的字符范围,[a-z],说明要匹配的文本内容的某一位置是a,b,c,d,....., q, y, z的某一区间,在本次为了匹配 https,因为 [a-z]加上了“+”表示匹配多个,如果不加只能匹配一个。符号:“://“为了匹配文本内容的://,为何是这样写的,因为正则中没有什么特殊符号用来表示,:或//,在正则表达式中可以用原来的字符匹配,只要不涉及到正则和普通字符相关联的特殊字符就好,比如 : 符号 "?",正则中符号"?",表示非贪婪模式,至多匹配一个,要是一个也没有也不会报错,在符号识别中它就是普通问号,用在正则匹配表达式中,就必须要加上符号“\”,让符号恢复原意。

3.re.search(pattern,string,flags)

pattern: 正则匹配表达式

string: 被匹配的文本

flags :标志位,扩展字符的效果

作用:re.search会匹配整个字符串,并返回第一个成功的匹配,如果匹配成功则返回结果,匹配失败则返回None,它和re.match()的区别在一个是从字符串首字母匹配文本内容,一个是从任意位置匹配内容。并且re.search会扫描整个被匹配对象,只会返回一个被成功匹配的对象,如果这列被匹配的文本内容中没有符合要求的,则会返回None

re.match从字符串首字母的开始匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到符合正则表达式的文本内容。

案例:

import re
import requests
cont = 'dd44--32ff_88'
ret = re.search("\d+",cont)
print(ret.group())

仅返回了44 为什么没有返回32 我说过了re.search只会返回第一个符合正则表达式匹配的内容,其他no pass。

如果是matchhanshune?

直接pass掉了,为啥呢?我说了,re.match()方法会从被匹配内容首字母开始匹配如果不符合,则直接pass掉,显然 被匹配对象 dd44--32ff_88开始位置是英文单词,所以用\d 以数字匹配显然是不对的。

我通过正确的方式去匹配:

显然可以成功匹配但是并不是我们想要的纯数字内容

  1. re.findall(pattern, string, flags)

pattern : 编译的正则表达式

string :被匹配的文本内容

flags : 扩展字符的特殊功能

re.findall 函数作用 :

在被匹配对象中找到符合正则表达式所编译的所有文本内容,将结果返回为一个列表,如果没有找到匹配的,则返回空列表。特别注意的是 match ()和search() 只会匹配首次遇到且符合结果的文本内容,而 findall()则会匹配所有内容。findall没有group参数

案例测试:

import re
import requests
cont = '我是44--54屌丝77是_bu_是88'
ret = re.findall("[\u4e00-\u9fa5a-z]+",cont)
print(ret)

符号“[\u4e00-\u9fa5]“用来匹配中文字符,为什么后面加了符号“a-z”因为文本内容中还有个“bu“,为什么我还加上符号“+”因为符号“+”,表示匹配多次如果不加则会匹配一个中文字符,加了可以返回多个

三,关于函数中flags : 扩展字符的特殊功能内容及其作用

   flags 标志位参
re.I(re.IGNORECASE) 使匹配对大小写不敏感
re.L(re.LOCAL)  做本地化识别(locale-aware)匹配
re.M(re.MULTILINE)  多行匹配,影响 ^ 和 $
re.S(re.DOTALL) 使 . 匹配包括换行在内的所有字符
re.U(re.UNICODE)根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

正则匹配其实并不是很难,重点是函数太多注意的事项太多,常见及其常用的就是那么几个,在这个函数我认为最常用的的是,re.findall, re.compile,re.sub

有很多我没有写出来不是不重要,我准备在下一篇文章中写出来,近期我会持续更新python面向对象编程,异步编程,python高级进阶,爬虫js逆向技术+app逆向

http://www.yayakq.cn/news/716990/

相关文章:

  • 深圳官网多产品的网站怎么做seo
  • 营销型网站单页工程施工公司
  • 网站建设和管理规则国外英语写作网站
  • 郴州网站建设解决方案网页设计代码如何写实训报告过程
  • 网站项目建设主要内容wordpress 数据表 插件
  • 郑州做网站和app的公司网站计数器php
  • 网站的网站建设企业网站项目维护费用
  • 公司网站管理系统电子商城网站开发与设计
  • 网站开发软件技术专业好吗南京 电子商务网站
  • 做网站北京公司网络运营策划
  • 网站怎么做第三方登录wordpress如何制作网页
  • 网红营销定义wordpress 图片优化
  • 做网站的软件dw下载浙江做网站找谁
  • 网站怎么申请微信支付接口wordpress 中文设置
  • 装饰网站建设的背景建设银行普卡申请网站
  • 移动做网站吗合肥制作小程序
  • 怎么在wordpress建站爬虫网站怎么做
  • 怎么给网站做百度坐标定位办公内网网站建设标准
  • 网站数据库空间大小设计云官网
  • 喀什市建设局网站查证件自响应式网站是什么意思
  • 网站做三个月收录100网站域名注册商标有什么好处
  • asp钓鱼网站开发广告sem是什么意思
  • 制作网站的走马灯怎么做WordPress首页放图片
  • 贵州住房城乡建设厅官方网站网站建设 站内页面连接
  • 手机投资网站登录注册
  • 可以免费发帖的网站成立公司股权怎么分配
  • 学校网站设计制作目的房产公司网站建设
  • 效果好企业营销型网站建设旅游后台网站
  • 凡科网站插件代码成都网站建设龙兵网络
  • 网站的竞品分析怎么做自开发购物网站