Python自动化开发从浅入深-语言基础(正则表达式)

  文本就是由文字字符串组成的,字符串就是0个到多个字符的序列,而常说的某个字符串匹配某个正则表达式,就是字符串中有部分是符合表达式的条件。   

  正则表达式是处理字符串的强大工具,它通过一定的语法规则查找匹配字符串,并返回自己想获取的字符串值。

即让字符串与某种模式匹配,而获取一个新的序列

  如要使用正则表达式语法,需import re模块,然后使用 r"正则表达式" (解释性正则定义)定义正则规则,也可通过 re.compile(r"正则表达式") (编译性正则定义)进行正则定义,编译性正则定义效率较解释性正则定义要高。

一、正则表达式元字符包括:

. ^ $ * + ? { [ ] \ | ( )

元字符是正则表达式语法的关键字,具有语法规则,如下例:...表示在a和b之间有3个任意字符,匹配时只需首尾字符是a和b,中间有三个任意字符便能匹配。
 

 

二、预定义字符集

\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_]。
  

 

三、字符匹配

.   匹配除换行符外的任意字符
\ 可以将一个字符进行转义成其他意思。保留特殊字符的本意。下例中的+号是元字符,有正则语法功能,如需表示原意,则需加上转义符\
[字符集] 可以匹配字符串中可以是字符集中的任意字符。下例[abc]表示只要是其中的任意一个字符便匹配。

 

 四、匹配字符的数目符号

*      对前一个字符匹配0或者无限次,''是对数字0次的匹配结果
+ 对前一个字符匹配1或者无限次
? 对前一个字符匹配0或1次,下例中对 -号的匹配可有可无
{m} 对前一个字符匹配m次,下例中只匹配2个数字
{m,n} 对前一个字符匹配m到n次,下例中匹配2到4个数字的值

 

五、匹配边界符号

^  或 \A   对字符串的开头字符串匹配,下例中只匹配头部的字符a
$ 或 \Z 对字符串的尾部字符串匹配,下例中只匹配尾部字符b
\b 对\w和\W之间的字符进行
\B    [
^\b]

 

六、逻辑与分组

|          或的意思,对左右字符任意匹配一个,匹配顺序从左到右

(...)      分组,

 

七、正则表达式函数

match(pattern, string)    利用pattern正则语法搜索字符串,查找到开头相符合的子字串
 
"a123abab"可以搜索到a字符,"123abab"搜索不到a字符。
search(pattern, string)    利用pattern正则语法搜索字符串,查找到第一个相符的子字串
  
match和serch搜索到的子字串,可以用其返回值的group()函数进行显示。


sub(pattern, replacement, string) 利用pattern正则语法搜索字符串,找到后,用replacement子字串替换搜索到的子字串。
  

split(pattern,string)     以正则表达式作为分割字符串,将分割后的所有子字符串放在一个list中返回


findall(pattern,string) 根据正则表达式搜索字符串,将所有符合的子字符串放入list中返回  

 

 

 

 

 

posted @ 2016-02-10 13:05  赵洪  阅读(259)  评论(0编辑  收藏  举报