Python模块学习 - re 正则表达式

re_fsm_regular_express 利用做字符处理非常方便,这当然离不开正则表达式的支持,下面是一篇CSDN上转载过来的关于re的文章。

今天学习了中有关正则表达式的知识。关于正则表达式的语法,不作过多解释,网上有许多学习的资料。这里主要介绍中常用的正则表达式处理函数。

re.match
re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。import re  
text = "JGood is a handsome boy, he is cool, clever, and so on…" 

m = re.match(r"(\w+)\s", text)  
if m:  
    print m.group(0), ‘\n’, m.group(1)  
else:  
    print ‘not match’ 
import re

text = "JGood is a handsome boy, he is cool, clever, and so on…"
m = re.match(r"(\w+)\s", text)
if m:
    print m.group(0), ‘\n’, m.group(1)
else:
    print ‘not match’

re.match的函数原型为:re.match(pattern, string, flags)

第一个参数是正则表达式,这里为"(\w+)\s",如果匹配成功,则返回一个Match,否则返回一个None;

第二个参数表示要匹配的字符串;

第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

re.search
re.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。import re  
text = "JGood is a handsome boy, he is cool, clever, and so on…" 
m = re.search(r’\shan(ds)ome\s’, text)  
if m:  
    print m.group(0), m.group(1)  
else:  
    print ‘not search’ 
import re

text = "JGood is a handsome boy, he is cool, clever, and so on…"
m = re.search(r’\shan(ds)ome\s’, text)
if m:
    print m.group(0), m.group(1)
else:
    print ‘not search’

re.search的函数原型为: re.search(pattern, string, flags)

每个参数的含意与re.match一样。

re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

re.sub
re.sub用于替换字符串中的匹配项。下面一个例子将字符串中的空格 ‘ ‘ 替换成 ‘-’ : import re  
text = "JGood is a handsome boy, he is cool, clever, and so on…" 
print re.sub(r’\s+’, ‘-’, text) 
import re

text = "JGood is a handsome boy, he is cool, clever, and so on…"
print re.sub(r’\s+’, ‘-’, text) 

re.sub的函数原型为:re.sub(pattern, repl, string, count)

其中第二个函数是替换后的字符串;本例中为’-’

第四个参数指替换个数。默认为0,表示每个匹配项都替换。

re.sub还允许使用函数对匹配项的替换进行复杂的处理。如:re.sub(r’\s’, lambda m: ‘[' + m.group(0) + ']‘, text, 0);将字符串中的空格’ ‘替换为’[ ]‘。

re.split
可以使用re.split来分割字符串,如:re.split(r’\s+’, text);将字符串按空格分割成一个单词列表。

re.findall
re.findall可以获取字符串中所有匹配的字符串。如:re.findall(r’\w*oo\w*’, text);获取字符串中,包含’oo’的所有单词。

re.compile
可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。下面是一个正则表达式对象的一个例子:

import re  
text = "JGood is a handsome boy, he is cool, clever, and so on…" 
regex = re.compile(r’\w*oo\w*’)  
print regex.findall(text)   #查找所有包含’oo’的单词  
print regex.sub(lambda m: ‘[' + m.group(0) + ']‘, text) #将字符串中含有’oo’的单词用[]括起来。 
import re

text = "JGood is a handsome boy, he is cool, clever, and so on…"
regex = re.compile(r’\w*oo\w*’)
print regex.findall(text)   #查找所有包含’oo’的单词
print regex.sub(lambda m: ‘[' + m.group(0) + ']‘, text) #将字符串中含有’oo’的单词用[]括起来。

更详细的内容,可以参考手册。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JGood/archive/2009/06/17/4277902.aspx

Share and Enjoy:
  • Print this article!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • RSS
  • Slashdot
  • Technorati
  • TwitThis

Related posts:

  1. Python正则表达式心得整理
  2. Python用SGMLParser抓取网页连接的改进
  3. python非贪婪,多行匹配正则表达式
  4. Python的lambda函数与排序
  5. 开始Python — Dictionary
  6. Python Programming – Sqlite for data persistence
  7. Python 3 简介
  8. 序列、元组、列表、字典
  9. BlogPump: Blog Post Client with Web Crawler(1) – big picture

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Contact us

Admin: Bryan Wu