1、查找文本中的模式

search()函数取模式和要扫描的文本作为输入,如果找到这个模式则返回一个Match对象,如果没找到,search()将返回None

   
   
   
   
  1. #!/usr/bin/python 
  2.  
  3. import re 
  4. pattern = 'this' 
  5. text = 'Does this text match the pattern?' 
  6. match = re.search(pattern, text) 
  7. s = match.start() 
  8. e = match.end() 
  9.  
  10. print 'Found "%s"\nin "%s"\nfrom %d to %d ("%s")' % \ 
  11.         (match.re.pattern, match.string, s, e, text[s:e]) 

结果:

Found "this"
in "Does this text match the pattern?"

from 5 to 9 ("this")

2、编译表达式

re包含一些模块级函数,用于处理作为文本字符串的正则表达式,不过对于程序频繁使用的表达式,编译这些表达式会更为高效。compile()函数会把一个表达式字符串转换为一个RegexObject。
 
   
   
   
   
  1. #!/usr/bin/python 
  2.  
  3. import re 
  4. regexes = [ re.compile(p) 
  5.         for p in ['this''that'
  6.         ] 
  7. text = 'Does this text match the pattern?' 
  8. print 'Text: %r\n' % text 
  9. for regex in regexes: 
  10.     print 'Seeking "%s" ->' % regex.pattern, 
  11.     if regex.search(text): 
  12.         print 'match!' 
  13.     else
  14.         print 'no match' 
结果:
Text: 'Does this text match the pattern?'

Seeking "this" -> match!
Seeking "that" -> no match

3、多重匹配

findall()函数返回输入中与模式匹配而不重叠的所有子串。

   
   
   
   
  1. #!/usr/bin/python 
  2.  
  3. import re 
  4.  
  5. text = 'abbaaabbbbaaaaa' 
  6. pattern = 'ab' 
  7. for match in re.findall(pattern, text): 
  8.     print 'Found "%s"' % match 
结果:
Found "ab"
Found "ab"