目录:
1、什么是正则表达式,python中得正则简介
2、re模块的内容
3、小练习
一、什么是正则表达式(re)
正则表达式相信很多人都熟悉了,在python中正则表达式的支持是通过re(regular expression)模块,正则表达式是可以匹配文本片段的模式,简单的是正则表达式就是普通的字符串,可以处理字符串。也就是说正则表达式的存在就是来处理文本字符串的
下面来熟悉下正则中的几个概念:
1、通配符
通配符是一种特殊语句可以使用它来代替一个或多个真正的字符比如‘ . ’点,他就可以代替任意的字符除了换行符,.python就可以等于xpython、+python等等
2、字符集
既然通配符”. ”可以表示一个任意的字符,那么字符集就可以表示一个字符的范围例如[a-z]就可以表示a-z的任意一个字符,还可以[a-zA-Z0-9]来表示大小写字母和数字,我们还可以将它来转义[^a]就是除了a的意思
注意的是这里的转意符不是单个\而是双\\
为什么使用两个反斜线?
这是为了通过解释器进行转义,需要进行两个级别的转义:1.通过解释器的转义;2.通过 re 模块转义。如果不想使用两个反斜线,可以考虑使用原始字符串,如:r'python\.org'。
3、选择符
为什么存在选择符呢?主要原因是假如我们想匹配两个字符串如“aaa”,“bbb”,我们就需要使用管道符(|)因此在匹配的时候就可以写成‘aaa|bbb’,当有的时候不需要匹配这两的时候假如只需要匹配字符串“aaa”或者“bbb”就可以写成“p(aaa|bbb)”
4、表示个数(重复模式)
表示个数顾名思义就是来表示这个字符有多少个的意思主要模式(pattern)有:
(pattern)*:表示这个模式可以重复0次或者多次
(pattern)+:表示允许这个模式出现一次或者多次
(pattern){m,n}:表示允许这个模式重复m到n次
(pattern){n}:表示重复n次
(pattern){n,} :表示重复n或者更多次,最低重复n次
5、表示开头和结尾
当我们要匹配以什么什么开头或者以什么什么结尾是表示开头我们可以使用‘^a’表示以a开头,’$a‘表示以a结尾
二、re模块的内容
既然我们知道re是个模块那么他肯定有很多功能函数来供我们使用下面我们来看一看
1 compile(pattern[, flags]) 根据包含正则表达式的字符串创建模式对象
2 search(pattern, string[, flags]) 在字符串中寻找模式
3 match(pattern, string[, flags]) 在字符串的开始处匹配模式
4 split(pattern, string[, maxsplit=0]) 根据模式的匹配项来分割字符串
5 findall(pattern, string) 列出字符串中模式的所有匹配项
6 sub(pat, repl, string[, count=0]) 将字符串中所有pat的匹配项用repl替换
7 escape(string) 将字符串中所有特殊正则表达式字符转义
这个compile我们最后来讲
首先我们来看看函数的语法:
re.match(pattern, string, flags=0)pattern:匹配的正则表达式
string:要匹配的字符串。
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配模式:
使用方法re.IGNORECASE,或者re.I
View Code1 I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case 2 使匹配对大小写不敏感;字符类和字符串匹配字母时忽略大小写。举个例子,[A-Z]也可以匹配小写字母,Spam 可以匹配 "Spam", "spam", 或 "spAM"。这个小写字母并不考虑当前位置。 3 4 L = LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale 5 影响 "w, "W, "b, 和 "B,这取决于当前的本地化设置。 6 locales 是 C 语言库中的一项功能,是用来为需要考虑不同语言的编程提供帮助的。举个例子,如果你正在处理法文文本,你想用 "w+ 来匹配文字,但 "w 只匹配字符类 [A-Za-z];它并不能匹配 "é" 或 "?"。如果你的系统配置适当且本地化设置为法语,那么内部的 C 函数将告诉程序 "é" 也应该被认为是一个字母。当在编译正则表达式时使用 LOCALE 标志会得到用这些 C 函数来处理 "w 後的编译对象;这会更慢,但也会象你希望的那样可以用 "w+ 来匹配法文文本。 7 8 U = UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode locale 9 统一成unicode编码 10 11 M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline 12 使用 "^" 只匹配字符串的开始,而 $ 则只匹配字符串的结尾和直接在换行前(如果有的话)的字符串结尾。当本标志指定後, "^" 匹配字符串的开始和字符串中每行的开始。同样的, $ 元字符匹配字符串结尾和字符串中每行的结尾(直接在每个换行之前)。 13 14 S = DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline 15 使 "." 特殊字符完全匹配任何字符,包括换行;没有这个标志, "." 匹配除了换行外的任何字符。 16 17 X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments 18 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之後;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。