- 帖子
- 16
- 精华
- 0
- 积分
- 61
- 阅读权限
- 20
- 注册时间
- 2016-2-2
- 最后登录
- 2017-5-8
|
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里面,也没有转义啊,大神
|
|