zhuyumu 发表于 2015-12-3 07:34:10

python 正则表达式

  

   


符号
说明
举例


literal
匹配字符串的值
foo


re1|re2
匹配正则表达式re1或re2
foo|bar


.
匹配任何字符(换行符除外)
b.b


^
匹配字符串的开始
^Dear


$
匹配字符串的结尾
/bin/*sh$


*
匹配前面出现的正则表达式0次或多次
*


+
匹配前面出现的正则表达式1次或多次
+\.com


?
匹配前面出现的正则表达式0次或多次
goo?


{N}
匹配前面出现的正则表达式N次
{3}


{M,N}
匹配重复出现M-N次的正则表达式
{5,9}


[...]
匹配字符组里出现的任意一个字符



[..x-y..]
匹配从字符x到y中的任意一个字符
,


[^...]
不匹配此字符集中出现的任何一个字符,
包括某一范围的字符
[^A-Za-z0-9_]


(*|+|?|{})
用于上面出现的任何"非贪婪"版本
重复匹配次数符号(*,+,?,{})
.*?


(...)
匹配封闭括号中正则表达式(RE),并保持为子组
({3})?,f(oo|u)bar












特殊符号




\d
匹配任何数字,和
(\D 是\d 的反义:任何非数符号)
data\d+.txt


\w
匹配任何数字字母字符
(\W 是\w 的反义)
\w+


\s
匹配任何空白符,和[\n\t\r\v\f]
(\S 是\s 的反义)
of\sthe


\b
匹配单词边界
(\B 是\b 的反义)
\bThe\b


\nn
匹配已保存的子组
price: \16


\c
逐一匹配特殊字符c
\.,\\,\*


\A(\Z)
匹配字符串的起始(结束)
\ADear

















常见的正则表达式函数与方法




compile(pattern,flags=0)
对正则表达式pattern进行编译,并返回一个regex对象



match(pattern,string,flags=0)
用正则表达式pattern匹配字符串string,
匹配成功返回匹配对象,否则返回None



search(pattern,string,flags=0)
用正则表达式pattern匹配字符串string的第一次出现,
匹配成功返回匹配对象,否则返回None



findall(pattern,string[,flags])
在字符串string中查找正则表达式模式pattern的所有(非重复)出现,
返回一个匹配对象的列表



finditer(pattern,string[,flags])
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器



split(pattern,string,max=0)
将string 按pattern模式分割后返回列表。
max用于指定最大分割次数,不指定将全部分割。



sub(pattern,rep1,string,max=0)
使用repl替换string中每一个匹配pattern的子串后返回替换后的字符串。



group(num=0)
返回全部匹配对象



groups()
返回一个包含全部匹配的子元组的元组



  
  关于贪婪匹配和非贪婪匹配举例:



1 import re
2
3 data='Thu Nov 29 01:14:11 2001::sbitp@mjuoeyjb.org::6777874277-5-8'
4
5
6 #非贪婪匹配
7 patt4='.+?(\d+-\d+-\d+)'
8 m=re.match(patt4, data)
9 print(m.group(1))
10
11 #贪婪匹配
12
13 patt5='.+(\d+-\d+-\d+)'
14 m=re.match(patt5, data)
15 print(m.group(1))
  输出结果:



6777874277-5-8
7-5-8
  
页: [1]
查看完整版本: python 正则表达式