Python中正则表达式应用

来源:互联网 发布:贴邮票lsd 淘宝暗语 编辑:程序博客网 时间:2024/06/06 11:43

1. 正则表达式是一种匹配文本片段的模式;

2. 通配符为'.',特殊字符需要反斜线转义,为了在re模块中得到反斜线我们需要转义反斜线,即当我们要使用符号'.'时,需要写‘\\.’才可以;

3. 字符集用[]表示,如[pj]则表示既可以匹配p也可以匹配j,[^abc]则表示匹配除abc之外的字符,[a-zA-Z0-9]则可以表示匹配任意英文字母和数字;

4. 选择符和子模式,管道符号|表示可以匹配两种字符串,如'python|perl',则表示既可以匹配'python'也可以匹配'perl',如果只需要字符串的部分用管道符号|,那么可以用()括起来,如'p(ython|erl)',括号括起来也叫作子模式;

5.可选项和重复子模式:如果在子模式后面加上'?'则表示这个子模式(或者叫这一部分),可以有,也可以没有,叫做可选项,比如'(www)?python',可以匹配'wwwpython',也可以匹配'python',如果在子模式后面加'*',则表示可以重复任意次,包括零次,加'+'表示重复一次或多次,加'{m,n}'表示重复m次到n次,同时如果没有'()',那么以上符号的性质会把前一个字符看做一个子模式;

6.如果只想让子模式在开头或者结尾可以用'^'标记开头,放在子模式的前面,'$'标记结尾,放在子模式的后面;

7.re模块的函数:

     re.compile(pattern[, flags]) 根据包含正则表达式的字符串创建模式对象

     re.search(pattern,string[,flags]) 在字符串中寻找模式

     re.match(pattern,string[,flags]) 在字符串的开始处匹配模式

     re.split(pattern,string[,maxsplit=0]) 根据模式的匹配项来分割字符串

     re.findall(pattern,string) 列出模式的所有匹配项

     re.sub(pat,repl,string[,count=0])将字符串中所有pat的匹配项用repl替换

     re.escape(string)  将字符串中所有特殊的正则表达式字符转义

8.匹配对象和组:对于re模块中能够找到匹配项时都会返回MatchObject对象,这些对象包含了那个模式匹配了字符串哪部分的信息,这些部分就是组,总之组就是放置在圆括号的子模式,组的序号取决于左边括号的个数,组0就是整个字符串

  其中re匹配对象的一些函数有:假设m=re.match(r'www\.(.*)\..{3}','www.python.org')

  m.group([group1,...]) 获取给定子模式的匹配项

  m.start([group]) 返回给定组匹配项的开始位置

  m.end([group]) 返回给定组匹配项的结束位置

  m.span([group])返回给定组匹配项的开始位置和结束位置

9.匹配可能存在贪婪模式和非贪婪模式:贪婪模式是尽可能匹配多的,当在匹配模式后面加上?时则表示非贪婪模式,即尽可能匹配尽量少的字符


               

0 0
原创粉丝点击