首页 > 编程语言 >python 正则表达式

python 正则表达式

时间:2024-03-02 21:22:33浏览次数:35  
标签:字符 匹配 re python pattern 正则表达式 字符串

正则表达式(regular expression)

关于这个知识点菜鸟教程上介绍的很详细
还有一个是介绍各种语言的正则表达式的

  • 正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的进行过滤。
  • 正则表达式是字符串处理的有力工具,但是并不是Python独有的,其他语言也有。
  • Python中,re模块提供了正则表达式操作所需要的功能。 re - Support for regular expressions
  • 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
  • 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

下面介绍一些常用的格式

  • 普通字符:直接匹配
    例如 'abc' 匹配 'abcde' 中的 'abc'

  • 枚举字符集:由 [xyz] 括起来的字符集合,匹配[]中的任意字符
    a[bd]c 匹配 'abcdefadc' 中的 'abc' 或者 'adc'

  • 否定枚举字符集:[^xyz],匹配不在[]中的任意字符
    a[^bc]c匹配字符串'abcdefadc'中的'adc'

  • 预定义字符\w: 匹配单词字符<等价于 [a-zA-Z0-9]

  • 预定义字符\W: 匹配非单词字符,等价于[^a-zA-Z0-9]

  • 重复限定符X+ X重复1次或多次
    'ab+'可以匹配'ab'或者'abb'或者'abbb'但不匹配'a'

通过 re 模块中的函数创建和使用正则表达式,对字符串进行匹配

re.findall (pattern, string) 返回匹配结果列表
re.sub (pattern, repl,string ) 返回替换后的字符串
re.split (pattern, string) 返回分隔后的字符串列表,其中pattern为分隔符模式

爬虫中用到的 正则表达式 和 re模块中的函数

.表示除了换行符以外的任意字符
\S表示除了空白符以外的任意字符
*匹配*之前的字符或者子模式的0次或者多次
+匹配+之前的字符或者子模式的1次或者多次
?匹配位于?之前的0个或者1个字符

贪心模式和非贪心模式

?紧随其它限定符*+{n}{n,}{n,m}之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。

re中的方法比较多,在此就记下用到的

re.S可以影响到.的行为,使得.也可以匹配换行符
re.compile(pattern,[,flags]) 创建模式对象
示例如下

contentpat='<div class="threadlist_lz clearfix">(.*?)</div>'  
contentlist=re.compile(contentpat,re.S).findall(data)

Reference

  1. 关于这个知识点菜鸟教程上介绍的很详细

  2. 还有一个是介绍各种语言的正则表达式的

标签:字符,匹配,re,python,pattern,正则表达式,字符串
From: https://www.cnblogs.com/guanghui-hua/p/18049249

相关文章

  • Selenium自动化爬取网页数据——Python实现
    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,MozillaFirefox,Safari,GoogleChrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作......
  • python的基础知识
    python的保留字与运算符的区别保留字是Python语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。在实际开发中,如果使用Python中的保留字作为标识符,则解释器会提示“invalidsyntax”的错误......
  • python面向对象(Object Oriented Program)
    面向对象(ObjectOrientedProgram)在Python中,所有的数据(包括数字和字符串)实际都是对象,同一类型的对象都有相同的类型。我们可以使用type()函数来获取关于对象的类型信息。什么是类,什么是对象?在Python中,使用类来定义同一种类型的对象。类(class)是广义的数据类型,能够定义复......
  • 异常(异常是python对象) 和 自定义异常类
    Python提供了异常和断言来处理程序在运行过程中出现的异常和错误什么是异常?分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于错误导致的运行异常,是需要程序员想办法解决的;但还有一些异常,是程序正常运行的结果,比如用raise手动引发的异常。异常是在程序执行过程中......
  • python一些技巧
    1.一个for循环的一个非常好用的例子示例如下:for_inrange(10):print("Helloworld!")2.Python中变量名后面加冒号,函数后面加箭头deff(text:str,max_len:'int>0'=80)->str:returnTrue函数声明中,text:strtext是参数:冒号后面str是参数的注释。如果......
  • python中的各种下划线
    ----------------------------核心风格:避免用下划线作为变量名的开始。---------------单下划线开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;但这只是一个约定,就像是道德约束,并没有法律效力双下划线开始的是私有成员,意思是只有类对象自己能访......
  • python取反操作符的解释
    今天看做词云的代码看到这样一句words_df=words_df[~words_df.segment.isin(stopwords.stopword)]刚开始看不懂这个"~",就去百度了一下,记录下来(1)在计算机里面,负数是以补码存储的(2)原码求补码:取反,+1(3)补码求原码:取反,+1(4)取反操作是在原码上进行的!实际的计算......
  • Python 中的 if __name__ == '__main__' 该如何理解
    结论if__name__=='__main__'我们简单的理解就是:如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。程序入口对于很多编程语言来说,程序都必须要有一个入口,比如C,C++,以及完全面向对象的编程语言Java,C#等。如果你接触过这些语言,对于程序入口这个概......
  • Python环境安装与配置
    1.浏览器输入python官方网站打开2.选择downloads后,再选择电脑的操作系统,如:Windows3.根据自己的电脑选择合适的版本,如:3.12版4.选择下载好的版本,鼠标右键选择以管理员身份运行5.勾选AddPythontoPATH,点击Customizeinstallation(自定义安装)6.点击next7.选中installPython3.......
  • 通过正则表达式匹配PNR编码中的航班信息
    PNR编辑内容主要由文本信息构,结果如下:一种方式是通过分隔符来提取信息,但效果是不理想的,因为格式会出现变化,推荐的方式是使用正则表达式,例如:1、通过正则获取航班号stringstrPattern=@"^[\s|\+|\-]?(?<Index>\d+)\.\s+\*?(?<FlightNo>\*?[A-Z0-9]{5,7})\s*(?<Level>[A-Z])\d......