学习Python2(正则表达式)

本文详细介绍了正则表达式的使用方法,包括其基本概念、元字符、常见模式及应用实例。通过实例演示了如何利用正则表达式进行文本匹配、搜索与替换等操作,同时提供了正则表达式的高级技巧,如贪婪匹配与懒惰匹配,以及如何使用正则表达式进行复杂文本分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感谢crossin大神!

# 调用范例
import re
text = "Hi, I am Shirley Hilton. I am his wife."
m = re.findall(r"hi", text) #把所有符合要求的存到列表中
if m:
    print m
else:
    print 'not match'

#贪婪匹配
m = re.findall(r"I.*e", text)
# 结果:['I am Shirley Hilton. I am his wife']
#懒惰匹配
m = re.findall(r"I.*?e", text)
# 结果: ['I am Shirle', 'I am his wife']

常用元字符

\b

在正则表达式中表示单词的开头或结尾,空格、标点、换行 都算是单词的分割。而“\b”自身又不会匹配任何字符,它代表的只是一个位置。所以单词前、后的空格标点之类不会出现在结果里。

[]

表示满足括号中任一字符。比如“[hi]”,它就不是匹配“hi“,而是匹配”h”或者”i”。
连续的字符,有一种简化的写法:[0-9]。类似的还有[a-zA-Z]的用法。

r

r”hi”。这里字符串前面加了 r,是 raw 的意思,它表示对字符串不进行转义。

.

在正则表达式中表示除换行符以外的任意字符。在上节课提供的那段例子文本中: Hi, I am Shirley Hilton. I am his wife.如果我们用“i.”去匹配,就会得到 [‘i,’, ‘ir’, ‘il’, ‘is’, ‘if’]。

\S

与“.”类似的一个符号是“\S”,它表示不是空白符的任意字符。注意是大写字符 S。

?

表示任意一个字符。

*

表示任意数量(包括0个)连续字符,这种被称为通配符。

在正则表达式中, 任意字符是用“.”表示,而“*”则不是表示字符,而是表示数量。

+

表示任意数量(大于0个)连续字符,这种被称为通配符。

{}

如果要限定长度,就用{}代替+,大括号里写上你想要的长度。比如 11 位的数字: \d{11}。

\d

任意一个数字。

其它


  1. 我们已经了解了正则表达式中的一些特殊符号,如\b、\d、.、\S 等等。这些具 有特殊意义的专用字符被称作“元字符”。常用的元字符还有:
    \w - 匹配字母或数字或下划线或汉字(我试验下了,发现 3.x 版本可以匹配汉字,但 2.x 版本不可以)
    \s - 匹配任意的空白符
    ^ - 匹配字符串的开始
    $ - 匹配字符串的结束

  2. \S 其实就是\s 的反义,任意不是空白符的字符。同理,还有:
    \W - 匹配任意不是字母,数字,下划线,汉字的字符 \D - 匹配任意非数字的字符
    \B - 匹配不是单词开头或结束的位置
    [a]的反义是[^a],表示除 a 以外的任意字符。[^abcd]就是除 abcd 以外的任意 字符。

  3. 之前我们用过*、+、{}来表示字符的重复。其他重复的方式还有:
    ? - 重复零次或一次
    {n,} - 重复 n 次或更多次 {n,m} - 重复n到m次
    正则表达式不只是用来从一大段文字中抓取信息,很多时候也被用来判断输入的 文本是否符合规范,或进行分类。来点例子看看:

^\w{4,12}$

这个表示一段 4 到 12 位的字符,包括字母或数字或下划线或汉字,可以用来作为用户注册时检测用户名的规则。(但汉字在 python2.x 里面可能会有问题)

\d{15,18}

表示 15 到 18 位的数字,可以用来检测身份证号码

^1\d*[x]?

以 1 开头的一串数字,数字结尾有字母 x,也可以没有。有的话就带上 x。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值