码迷,mamicode.com
首页 > 编程语言 > 详细

python 正则表达式的处理

时间:2015-06-29 11:38:03      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

1.基本用法

#!/usr/bin/env python
# coding=utf-8

import re

# example 1
text ="fjsk test\t fjskd bar\t \ttest"
regex = re.compile(\s+)
print regex.split(text)

# example 2
email ="""
    jfksdfasm@qq.com
    test@test.com.cn
    jfdskf@163.com
    jkmiao@yahoo.123com
    """

pattern = r[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z.0-9]{2,6}
regex = re.compile(pattern,flags=re.IGNORECASE)

# get all 
print regex.findall(email)

# get the first one
m = regex.search(text)
# print email[m.start():m.end()]
print m

# replace 
print regex.sub(RECORD,email)


显示:

jkmiao@sysucis:~/workplace/python/test$ python regex.py 
[fjsk, test, fjskd, bar, test]
[jfksdfasm@qq.com, test@test.com.cn, jfdskf@163.com, jkmiao@yahoo.123com]
None

    RECORD
    RECORD
    RECORD
    RECORD

 

2. 分组,返回元组

#example 3

pattern = r([A-Z0-9._%+=]+)@([A-Z0-9.-]+)\.([A-Z.]{2,5})
regex = re.compile(pattern,flags=re.IGNORECASE)
m = regex.match(name@domain.suffix)
print m.groups()

print regex.findall(email)
# output

(name, domain, suffi)
[(jfksdfasm, qq, com), (test, gamil, com), (jfdskf, 163, com), (jkmiao, yahoo.com, cn)]

 

 

3.给分组加名称,返回字典

#example 4

regex = re.compile(r"""
                   (?P<userame>[A-Z0-9._%+-]+)
                   @(?P<domain>[A-Z0-9.-]+)
                   \.
                   (?P<suffix>[A-Z0-9.]{2,4})
                   """,flags=re.IGNORECASE|re.VERBOSE)

m = regex.match("jkmaio@sysu.com")
print m.groupdict()

print regex.findall(email)

# output
jkmiao@sysucis:~/workplace/python/test$ python regex.py

{domain: sysu, userame: jkmaio, suffix: com}
[(jfksdfasm, qq, com), (test, gamil, com), (jfdskf, 163, com), (jkmiao, yahoo.com, cn)]

 

 

python 正则表达式的处理

标签:

原文地址:http://www.cnblogs.com/jkmiao/p/4607027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!