Python学习教程之正则模块的使用

IT科技2025-11-05 10:01:07212

  就其本质而言,学习正则表达式(或RE)是教程一种小型的、高度专业化的正则模编程语言,(在Python中)它内嵌在Python中,使用并通过re模块实现。学习正则表达式模式被编译成一系列的教程字节码,然后由用C编写的正则模匹配引擎执行。

  元字符

  . :除换行符以外的使用任意符号,re.S模式也可以使 . 匹配包括换行在内的学习所有字符

  ^:匹配字符串的服务器租用开头

  $:匹配字符串的末尾。

  *:匹配0个或多个的教程表达式。默认贪婪模式

  +:匹配1个或多个的正则模表达式。默认贪婪模式

  ?使用:匹配0个或1个由前面的正则表达式,默认非贪婪模式

  { n,m}:匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

  [ ]:字符集,学习多个字符选其一,教程[^...]取反

  |:匹配做正则表达式或右边正则表达式

  ( ):G匹配括号内的正则模表达式,也表示一个组

  \:转移符

import re # (1) . ^ $ ret = re.findall("hello world","hello world") print(ret) ret = re.findall("^hello world$","hello python,hello world,hello re") print(ret) ret = re.findall("^hello .....$","hello world") print(ret) # (2) * + ? ret = re.findall("^hello .*","hello ") ret = re.findall("^hello .+","hello ") ret = re.findall("^hello .?","hello abc") # (3) {} () ret = re.findall("hello .{5}","hello python,hello world,hello re,hello yuan") print(ret) ret = re.findall("hello .{2,5}","hello python,hello world,hello re") print(ret) ret = re.findall("hello .{5},","hello python,hello world,hello re") print(ret) ret = re.findall("hello (.*?),","hello python,hello world,hello re,hello yuan,") print(ret) # ret = re.findall("hello (.*?)(?:,|$)","hello python,hello world,hello re,hello yuan") # print(ret) # (4) [] | ret = re.findall("a[bcd]e","abeabaeacdeace") print(ret) ret = re.findall("[a-z]","123a45bcd678") print(ret) ret = re.findall("[^a-z]","123a45bcd678") print(ret) ret = re.findall("www\.([a-z]+)\.(?:com|cn)","www.baidu.com,www.jd.com") print(ret) # (5) \ 1、源码库反斜杠后边跟元字符去除特殊功能,比如\. 2、反斜杠后边跟普通字符实现特殊功能,比如\d \d 匹配任何十进制数; 它相当于类 [0-9]。 \D 匹配任何非数字字符; 它相当于类 [^0-9]。 \s 匹配任何空白字符; 它相当于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符; 它相当于类 [^ \t\n\r\f\v]。 \w 匹配任何字母数字字符; 它相当于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_] \b 匹配一个特殊字符边界,比如空格 ,&,#等 ret = re.findall("\d+","123a45bcd678") print(ret) ret = re.findall("(?:\d+)|(?:[a-z]+)","123a45bcd678") print(ret)

  正则方法

import re # 查找所有符合条件的对象 # re.findall() # 返回列表 # 查找第一个符合条件的匹配对象 s = re.search("\d+","a45bcd678") print(s) print(s.group()) # match同search,不过只在字符串开始处进行匹配 s = re.match("\d+","a45bcd678") # print(s) # print(s.group()) # 正则分割split ret = re.split([ab], abcd) print(ret) # 正则替换 def func(match): name = match.group() print("name",name) return "xxx" # \1代指第一个组匹配的内容 \2第二个组匹配的内容,思考如何能将所有的名字转大写替换 ret = re.sub("(hello )(.*?)(,)","\\1yuan\\3","hello python,hello world,hello re,") print("ccc",ret) # 编译再执行 obj=re.compile(\d{3}) ret=obj.search(abc123ee45ff) print(ret.group()) # 123

  练习:爬虫豆*网

com=re.compile( <div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span> .*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>, re.S) com.findall(s)b2b供应网
本文地址:http://www.bzve.cn/html/350b1799632.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

华硕笔记本电脑2016(华硕笔记本电脑2016年度最佳选择,助您高效工作与娱乐)

又一个编程神器来了!微软开源软件特征源码分析工具

Java与Python:你应该选择哪个?

25个超有用的Python代码段

早在Ubuntu问世之前,Debian已经是Linux领域的一股主力军了。更确切地来说,正是Debian这款Linux发行版,让从Knoppix到Simply Mepis的其他众多发行版得以成为现实。这就好比是Ubuntu之于Linux Mint的关系:Ubuntu为Mint提供了便于开发的基础。在本文中,本人将详细介绍Debian与Ubuntu相比孰优孰劣,以及Dibian是不是有能力成为实力强劲的Ubuntu替代者。发行版安装尽管Ubuntu立足于Debian基础上,但它不会带来一模一样的安装体验。比如说,Debian让你可以试用KDE、GNOME及其他的桌面环境,而Ubuntu本身实际上就提供了Unity桌面环境。诚然,现在市面上有些Ubuntu派生版提供替代桌面,但Debian是以Debian的名义正式提供替代桌面的。这是Ubuntu所欠缺的地方。值得一提的另一个方面是Debian的安装方式。你有两个选择:要么使用标准的安装ISO文件,要么使用随安装程序捆绑在一起的Live ISO文件。我使用了Live ISO文件,目的是为了看看该版本上的安装程序是怎么处理安装的。让我吃惊的是,按图形化用户界面(GUI)安装程序逐步操作不仅非常简单,Debian甚至还建议我考虑建立一个专门的主分区。考虑到Ubuntu仍是不给予这种建议的少数发行版之一,Debian的这项特性非常好。Ubuntu也提供了一个优秀的GUI安装程序;不过,我发现缺少建议建立一个专门的主分区让人沮丧,因为从长远来看这只会有利于用户。我确信,Ubuntu开发人员迫使用户手动选择该选项肯定有某个神秘的理由,但缺少这个简单的单选按钮让我非常恼火。要考虑的另一个方面是,Debian的安装过程会提出新手用户可能不会明白的一些问题。比如说,关于程序包镜像和GRUP安装在哪里的问题最好还是留给中高级用户去处理。这倒不是说,新手用户搞不明白此类问题,而是说大多数人不愿意为了搞清楚这些东西到底啥意思而硬着头脑研究一番。Ubuntu不同于Debian的另一个方面是,安装过程中出现的视觉效果。Debian的GUI安装程序缺少Ubuntu的安装过程中出现的各种滚动图形。这倒不是说,一方在这个方面胜于另一方;而是说,这大概表明了Debian给人的印象:这是一款朴实无华的发行版。桌面体验一旦安装完毕,Ubuntu和Debian都提供了一个标准的桌面环境,该桌面环境提供了应用程序菜单、桌面和各种小应用程序。就Debian而言,我选择使用Gnome,那样我最后得到的桌面是自己选择的。就Ubuntu而言,你最后得到的桌面会是Unity。Ubuntu随带火狐浏览器,而Debian则提供了没有品牌的Iceweasel浏览器。它与火狐实为同一款浏览器,只是没有所有权归属Mozilla基金会的商标品牌。我选择的Gnome桌面随带一种标准的Gnome体验。由于我在虚拟机中运行该桌面,最后得到了一种快速的后备模式,因为在我的测试机上性能是限定的。坦率地说,在拥有较少资源的机器上运行时,带Gnome的Debian在性能方面可以说完胜Ubuntu。不过从外观上来看,Ubuntu在美感方面扳回一局。这两款发行版在默认安装后都使用PulseAudio作为其声音服务器,这让人大跌眼镜,因为大多数Debian用户不太可能想要使用PulseAudio,因为它被许多Linux用户认为是一项臃肿的技术。软件管理Debian与Ubuntu有着共同之处的一个地方是,使用Debian软件包管理及其随带的配套工具。在终端层面,apt用于软件包管理。GUI软件包管理方面就开始不一样了:Ubuntu在默认情况下使用Ubuntu软件中心(Ubuntu Software Center,https://apps.ubuntu.com/cat/),而Debian使用Synaptic。对经验丰富的Linux爱好者来说,后者实际上更受青睐,因为Synaptic是一款比软件中心更出色的软件工具。 不过,新手用户可能发觉自己很想念Ubuntu软件中心,因为Synaptic缺少了Ubuntu的默认选项所具有的那种完美。另一方面是Ubuntu的个人软件包档案(PPA,https://launchpad.net/ubuntu/+ppas)和Debian的backports(http://backports.debian.org/)。Ubuntu的PPA其想法在于,你可以确保自己选择的最新的每一款软件都是版本最新。至于Debian,用户可以使用Debian backports获得同样的体验。这些软件基本上是Debian进行测试的、为了供Debian稳定版用户使用而开发的。至于Ubuntu和Debian,用户都要小心,因为先进软件有时可能会带来新问题。我给出的建议是,这两种方法最好都避免,除非是有修正版,或者假如你使用任何某一款软件的先进版可以获得某项功能。虽然旧版软件似乎有点乏味,但是它们往往更加稳定。其他杂项Ubuntu不同于Debian的另一个方面是,Ubuntu中的大多数网络设备在默认情况下就能工作。而万一需要某个专有的驱动程序,限制性驱动程序管理工具就会轻松处理这个问题。相比之下,Debian无法在默认情况下运行许多无线设备。诚然,Debian组件库里面有所需的二进制大对象文件(blob);不过,安装这些文件,并且让许多常用的无线芯片组能够与Debian协同运行还是需要有劳最终用户。一些人可能认为,Debian用起来更困难。我不赞同这一说法,而是会认为,Debian就是没有提供安全带的Linux。想在Debian环境下获得类似Ubuntu的体验,只需要在Debian维基(http://wiki.debian.org/)方面花点时间,另外添加一两个组件库。而最后,你得到的是一个运行稳定的、反应迅即的桌面,它在速度和稳定性方面会让任何安装的Ubuntu相形见绌。享受这个好处的秘密是,Debian只需要你花一点工夫。证明Debian更胜一筹的最后一个例子是,安装专有的视频驱动程序。在经验丰富的用户看来,Debian方法相当简单直接。只要浏览至相应页面,添加所需的组件包,然后粘贴你所需驱动程序的安装命令即可。 不过,Ubuntu用户已被专有的驱动程序管理器过分宠坏了。真正的好消息是,实际上,Debian方法比Ubuntu方法快捷得多。Debian用户只需要从Debian维基拷贝和粘贴两个命令框的内容。另一方面,Ubuntu用户则依赖GUI;众所周知,GUI远远谈不上十全十美。更糟糕的是,要是万一出了什么岔子,假如不深入钻研日志本身,就没有详细对策可供你采取。这里的要点在于,Debian需要更实际上手的用户体验。有些人喜欢这样,而有些人一想到让桌面端Linux成为更深入的体验就犹豫不决。所以说,Debian是实力强劲的Ubuntu替代者吗?答案是肯定的,假如你愿意调整自己的期望的话。有些用户愿意学习Linux如何工作,让他们多花点时间添加所需组件库以获得额外的硬件支持,那毫无问题;对这些人来说,Debian是个非常好的选择。Debian用起来比Arch Linux来得容易,但仍为用户们提供了一种运行速度快又稳定的桌面,你在今后好多年都可以放心地用它。

当我们谈容器的时候,我们在谈什么

如何处理Web图片优化?

值得推荐的 Docker 安全开源工具

友情链接

滇ICP备2023006006号-39