设为首页收藏本站

Crossin的编程教室

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

【Python 第56课】 正则表达式(2)

[复制链接]

0

主题

1

好友

61

积分

注册会员

Rank: 2

楼主
发表于 2016-2-4 14:02:41 |显示全部楼层
crossing先生,请帮我看看这个问题啊,谢谢

#!/usr/bin/python
#coding=utf-8
#author=xuqq
#下面这个程序是练习正则表达式的
#从下面一段文本中,匹配出所有s开头,e结尾的单词。


import re

def main():
    text = "site sea sue sweet see case sse ssee loses"
    #m = re.findall("\bs.*e\b", text)            #返回结果是一个包含所有匹配的list。贪婪匹配
    #m = re.findall(r"\bs\S*?e\b",text)             #返回结果是匹配到最短的就停止,懒惰匹配
    m = re.findall(r'\bs\S*?e\b',text)
    if m:
        print m
    else:
        print 'not match'
    #print "\bhi"
    #print r"\bhi"             #加r是为了把所有字都打出来,不转义。因为python的字符串碰到“\”就会转义它后面的字符。如果你想在字符串里打“\”,则必须要打“\\”。
    print "我们看看转义了吗,加了r之后:\t", r"\bs\S*?e\b"        #打出来\b什么的都在
   
if __name__=='__main__':
    main()
   
#“.”在正则表达式中表示:  除换行符以外的任意字符。
#“\S”,它表示:           不是空白符的任意字符。注意是大写字符S。
#“*”表示:                数量:它表示前面的字符可以重复任意多次(包括0次)

输出下来的问题如下:
print "我们看看转义了吗,加了r之后:\t", r"\bs\S*?e\b"        #打出来\b什么的都在

m = re.findall(r"\bs\S*?e\b",text)             #返回结果是匹配到最短的就停止,懒惰匹配

同样的r
放在print里面,就是照实打出来

r放在正则表达式里 ,\b \S什么的就不是照实打了,还是转义了

m= re.findall(r"\bs\S*?e\b",text)   “改成 '  试试
匹配出来的结果一样

就是我发现,同样的一个正则规则,放在print里面和放在re.findall里面有差别

同时,照理说,双引号转义,单引号不转,但是单引号放在re.findall里面,也没有转义啊,大神
回复

使用道具 举报

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

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

GMT+8, 2024-5-5 01:43 , Processed in 0.032393 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部