学习正则表达式笔记

1.正则表达式简介

   正则表达式为高级的文本模式匹配,抽取,与和或形式的搜索和替换功能提供了基础。也就是说正则表达式(RegEx)能匹配到多个字符,你就可以很容易的操作这些匹配到的字符,只要你运用正确的字符和特殊符号。

  Python中通过导入 re 模块来支持正则表达式。

2.常见的正则表达式符号和特殊字符

  2.1符号

  


符号表示法

描述 示例

literal

匹配文本字符串的字面值 literal,即匹配原始字符 foo
re1|re2 匹配正则表达式 re1 或者 re2,中间的 | 相当于或,可以匹配两边的字符 foo|bar
.
匹配任何字符(除了\n 之外),点可以匹配任何值,除了换行符,空白这些都可以匹配

b.b
^ 表示匹配开始的位置,如^Dear,表示匹配从Dear开始匹配,在Dear前的字符不管 ^Dear
$ 表示匹配终止位置,如end$,表示遇到end就停止匹配,在end之后的字符就不匹配了 end$
*
表示匹配任意次数,即可以匹配0次,也可以匹配100次,如[A-Za-z0-9]*,

就表示可以匹配方括号内所有字母,数字任意次数,可以可以用来匹配电子邮件地址

[A-Za-z0-9]*
+ 表示匹配一次以上,即至少要匹配一次,如a+,表示匹配a至少一次 a+
?
表示匹配 0 次或者 1 次前面出现的正则表达式,

goo?,就表示可以匹配到goo一次或没匹配到goo

goo?
[…] 表示匹配来自字符集的任意单一字符,在方括号中就可以 [aeiou]
{N} 表示匹配前面的正则表达式N次,如[0-9]{3} ,就表示可以,在1到9中,匹配3次 [0-9]{3}
{M,N} 表匹配 M~N 次前面出现的正则表达式,如[0-9]{5,9},就表示匹配5到9次 [0-9]{5,9}
[..x?y..] 表示匹配 x ~ y 范围中的任意单一字符 [0-9], [A-Za-z]
[^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符 [^aeiou]
(…) 表示匹配封闭的正则表达式,然后另存为子组,用于分组 ([0-9]{3})?
(*|+|?|{})? 用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{}) .*?[a-z]

  2.2 特殊字符


特殊字符

表示法

描述 示例
\d
匹配任何十进制数字,与[0-9]一致(\D 与\d 相反,不匹配任何非数值型的数字),

如\d+,表示可以匹配多个数字

\d+
\w 匹配任何字母数字字符,与[A-Za-z0-9_]相同(\W与之相反) [A-Za-z_]\w+
\s
匹配任何空格字符,与[\n\t\r\v\f]相同(\S 与之相反),

如of\sthe,表示of和the之间有个空格

of\sthe
\b 匹配任何单词边界(\B 与之相反),如\bThe\b ,就表示仅仅匹配单词 the \bThe\b
\N 匹配已保存的子组 N(参见上面的(…)) price: \16
\c 逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义) \., \\, \*
\A(\Z) 匹配字符串的起始(结束)(另见上面介绍的^和$) \ADear

    学会了上面的正则表达式符号和特殊字符,剩下的就是灵活组合成需要的正则表达式,多熟悉就好了。

3.正则表达式和 Python 语言

3.1 re 模块函数和正则表达式对象的方法

  1.Python使用模块re,来支持正则表达式,导入方法: import re

  2.使用 compile(pattern,flags = 0) 来编译正则表达式的模式。

  3.使用 match(pattern,string,flags=0) 来匹配字符串。如果匹配成功,就返回匹配对象;如果失败,就返回 None。

  4.使用search(pattern,string,flags=0)  来搜索需要的字符串,如果匹配成功,则返回匹 配对象;如果失败,则返回 None 。

  5.使用findall(pattern,string [, flags] ) 来寻找所有匹配到的字符串,并返回一个匹配列表。

  6.使用find(pattern,string [, flags] ) 只会找到满足匹配要求的第一个字符串。即只匹配最前面的一个。

3.2 常用的模块属性

  1.re.I、re.IGNORECASE,表示不区分大小写的匹配。

  2.re.L、re.LOCALE,根据所使用的本地语言环境通过\w、\W、\b、\B、\s、\S 实现匹配。

  3.re.M、re.MULTILINE,^和$分别匹配目标字符串中行的起始和结尾,而不是严格匹配整个字符串本身的起始和结尾。

  4.re.S、rer.DOTALL,“.”(点号)通常匹配除了\n(换行符)之外的所有单个字符;该标记表示“.”(点号) 能够匹配全部字符。

  5.re.X、re.VERBOSE,通过反斜线转义,否则所有空格加上#(以及在该行中所有后续文字)都被忽略,除非 在一个字符类中或者允许注释并且提高可读性。

时间: 2024-10-15 17:39:21

学习正则表达式笔记的相关文章

学习正则表达式笔记(二)

正则匹配的各种模式 1.择一匹配(|) 择一匹配用管道符号(|),也就是竖线表示.代表可以从多个模式中选择一个,可用于分割正则表达式.例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc. 2.匹配任意单个字符 点号(.)可以匹配除换行符 \n 以外的任意字符,无论是空格,字母,数字,可打印字符.不可打印字符,还是一个符号,使用点号都能够匹配它们. 在Python中,如果使用模块属性re.S 也就是 re.DOTALL,那么换行符 \n 也可以匹配了. 3.从字符串起始或者结尾

[SQLServer]学习总结笔记(基本涵盖Sql的所有操作)

--################################################################################### /* 缩写: DDL(Database Definition Language): 数据库定义语言 DML(Database Manipulation Language): 数据库操作语言 DCL(Database Control Language): 数据库控制语言 DTM(Database Trasaction Manag

学习hibernate笔记

以前学习java的时候,一开始就学习了hibernate,那时候总觉得ssh非常高大上,所以就急忙看了下相关视频.不过因为实际需要不高,所以后来一直没有使用上hibernate组件.现在一年过去了,也疯狂学习了java一段时间了,做过几个不大的项目,但是总算对java有些了解.现在参加了工作,公司使用的就是ssh,所以这两天又重新开始捣鼓hibernate.这次学习直接使用editplus,直接开发.看了官网的demo,发现英语也没有想象中那么困难.哈哈,把自己的学习记录下来吧.这里主要记录三个

Javascript学习-------正则表达式

Javascript RegExp对象(正则表达式对象): RegExp:是一种模式. 当你要检索某个文本时,可以使用这种模式来描述要检索的内容. 创建RegExp对象: 使用RegExp的显式构造函数创建:             new RegExp("pattern"[,flags])        使用RegExp的隐式构造函数创建:             /pattern/[flags] 解释:pattern是要使用的正则表达式模式文本 flags设置正则表达式的标志信息

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

轻松学习正则表达式

转载自:http://www.cnblogs.com/jamesping/articles/2252675.html 装载自:http://www.cnblogs.com/sxwgf/archive/2011/11/17/2252076.html 继续把我在个人博客上新翻译的文章投递到博客园来,这次是有关正则表达式的,很基础,主要是让读者把握住正则表达式中的3种括号的用法,用这3种括号几乎可以涵盖所有的正则式. 写在最前面 前两天我从CodeProject上翻译了一篇关于Javascript的文

DSP28377S - ADC学习编程笔记

DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采样方式是不一样的:F28335ADC 采样序列可以配置为顺序采样和同步采样模式,而F28377S采样序列可以配置为round-robin or burst模式,这两种模式下面再讲解. 2 ADC上电配置步骤 首先明确一点,ADC是专用管脚,不需要配置GPIO,所以可以直接配置ADC的寄存器 //Wr

推荐学习正则表达式的教程

推荐学习正则表达式的教程:看着感觉不错,适合入门和工作以后参考之用 正则表达式30分钟入门教程 推荐学习正则表达式的教程,布布扣,bubuko.com

2016-8-4学习正则表达式

2016-8-4学习正则表达式 编程 正则 第二章 简单的模式匹配 正则表达式唯一的用途就是在文本中匹配和寻找模式 匹配字符串字面值的方法就是使用普通的字符. 第三章 边界 断言标记边界,但是并不耗用字符. 第四章 选择,分组和后向引用 在两种或更多可选模式中选择一个 创建子模式 捕获一个分组以便之后进行后向引用 对组合的模式 使用某项操作(如量词) 使用非捕获分组 原子分组(高级) 第5章 字符组 字符组也被称为 方括号表达式 第6章 匹配 Unicode 和 其他字符 表示超过10万个字符的