设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第57课】 正则表达式(3)

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2014-6-25 10:32:53 |只看该作者
paul 发表于 2014-6-24 22:09
可以啊,为什么我也能匹配出来?
还有多一个?有什么区别吗?
?表示0个或1个,*表示0个或多个,两者放一 ...

不好意思,看错了。的确是可以的,不需要有?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

12#
发表于 2014-6-24 22:09:05 |只看该作者
crossin先生 发表于 2014-6-24 19:03
但如果有sxxxe这种就不行了

可以啊,为什么我也能匹配出来?
还有多一个?有什么区别吗?
?表示0个或1个,*表示0个或多个,两者放一块不还是0个或多个吗?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

11#
发表于 2014-6-24 19:03:10 |只看该作者
paul 发表于 2014-6-23 21:57
再问一个问题:前题答案用\bs\S*e\b,是不是也可以?

但如果有sxxxe这种就不行了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

10#
发表于 2014-6-23 21:57:59 |只看该作者
再问一个问题:前题答案用\bs\S*e\b,是不是也可以?
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

9#
发表于 2014-6-23 18:06:27 |只看该作者
crossin先生 发表于 2014-6-22 23:15
字符里的\会被转义。\b是有另有含义。所以要么用\\b,(用\\转义成为\)。要么用r"\b"替代"\b",带前缀r ...

好的,谢谢,解决了!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2014-6-22 23:15:55 |只看该作者
paul 发表于 2014-6-22 20:28
请教一下,我为什么一用\b,运行结果就会是not match?
import re
#text="Hi,I am Shirley Hilton,I am his  ...

字符里的\会被转义。\b是有另有含义。所以要么用\\b,(用\\转义成为\)。要么用r"\b"替代"\b",带前缀r的字符串表示raw,对其中的字符不转义
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

7#
发表于 2014-6-22 20:28:35 |只看该作者
请教一下,我为什么一用\b,运行结果就会是not match?
import re
#text="Hi,I am Shirley Hilton,I am his wife."
text="site sea sue sweet see case sse ssee loses"
m=re.findall("\bs\S*?e\b",text)

if m:
    print m
else:
    print "not match"

代码如上,只要不用"\b",都是可以正常运行的,麻烦懂的解释一下吧
回复

使用道具 举报

0

主题

0

好友

152

积分

注册会员

Rank: 2

6#
发表于 2013-10-2 00:30:21 |只看该作者
compile会把正则表达式编译成一个对象,据说效率上会高一些,尤其在使用同一个规则多次匹配的时候
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2013-9-27 13:25:51 |只看该作者
simple 发表于 2013-9-27 09:11
mport re
text = 'site sea sue sweet see case sse ssee loses'
pattern = re.compile(r'\bs\S*?e\b')

compile会把正则表达式编译成一个对象,据说效率上会高一些,尤其在使用同一个规则多次匹配的时候
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

62

积分

注册会员

Rank: 2

地板
发表于 2013-9-27 09:11:32 |只看该作者

回帖奖励 +3

mport re
text = 'site sea sue sweet see case sse ssee loses'
pattern = re.compile(r'\bs\S*?e\b')
m = pattern.findall(text)
print m

为什么说上面这段代码就比下面的效率高啊



import re
text = 'site sea sue sweet see case sse ssee loses'
m = re.findall(r'\bs\S*?e\b',text)
print m
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-17 17:04 , Processed in 0.020234 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部