Python 系列(17) 正则表达式

Posted on Posted in python

相关 [Python 正则](http://liuhonghe.me/python-sth-regule.html)

  1. #!/usr/bin/env python  
  2. #coding:utf-8  
  3.   
  4. import re  
  5.   
  6. a = "hello world,I a\t xiao_\ m1 9ing.\tI am \S 182 years old,\n my job is IT'm'onkey!%a11"  
  7. b = "(1,2,3)"  
  8.   
  9. print re.findall(r'.',a) # 匹配所有  
  10. print re.findall(r'\w',a) # 匹配所有数字字母下划线  
  11. print re.findall(r'\W',a) # 匹配所有非数字字母下划线  
  12. print re.findall(r'\d',a) # 匹配所有数字  
  13. print re.findall(r'\D',a) # 匹配所有非数字  
  14. print re.findall(r'\s',a) # 匹配所有空白字符  
  15. print re.findall(r'\S',a) # 匹配所有非空白符  
  16. print re.findall(r'\w\d',a) # ['m1', '18', 'a1'],所有规则,可以组合使用  
  17.   
  18. print re.findall(r'[^am]',a) # 匹配除了a和m之外的所有字符  
  19. print re.findall(r'[a-zA-G]',a) # a到z   
  20. print re.findall(r'am|o',a) # 匹配|两边的任意一种字符  
  21.   
  22. print re.findall(r'\w\d',a) # ['m1', '18', 'a1']  
  23. print re.findall(r'\w(\d)',a) # ['1', '8', '1'],只返回括号中的  
  24.   
  25. print re.findall(r'\w{2}',a) # 匹配两次  
  26. print re.findall(r'\w{2,4}',a) # 匹配两次到4次  
  27. print re.findall(r'\w*',a) # 匹配所有  
  28. print re.findall(r'\w?',a) # 0次或1次  
  29. print re.findall(r'\w+',a) # 1次到多次  
  30.   
  31. # re.S  修改.的匹配方式 让. 匹配到 \n  
  32. # re.M  修改\n的匹配方式   没有任何区别  
  33. # re.I  忽略大小写  
  34.   
  35. print re.findall(r'.',a,re.S)  
  36.   
  37. #(.*)贪婪匹配  #尽可能多的匹配  
  38. #(.*?)反贪婪匹配 #尽可能少的匹配  
  39.   
  40. print re.findall(r'(a.)b','abbbb')  
  41. print re.findall(r'(a.*)b','abbbb')  
  42. print re.findall(r'(a.*?)b','abbbb')  
  43.   
  44. # Re.search()从字符串中匹配一次指定规则  
  45. # Re.match()从字符串开头匹配一次指定规则  
  46.   
  47.   
  48. # Re.sub  类似于replace 替换  
  49. # Re.split   类似于split 切分  
  50. # Re.compile  形成一个匹配模板  

爬取例子

  1. #coding:utf-8  
  2.   
  3. import re  
  4. from lxml import etree  
  5. import urllib2  
  6. import urllib  
  7.   
  8. url = 'http://www.ibtimes.com.cn/'  
  9. hander = {  
  10.         "Referer":"http://www.ibtimes.com.cn/",  
  11.         "User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"  
  12.         }  
  13. def ppk(url):  
  14.     req = urllib2.Request(url,None,hander)  
  15.     opens = urllib2.urlopen(req)  
  16.     #print opens  
  17.     content = opens.read()  
  18.     #print content  
  19.     img = re.findall(r'<img src="(.*?)"',content,re.S)  
  20.     #print img  
  21.     for i in img:  
  22.         # print i  
  23.         try:  
  24.             name = i.rsplit('/',1)[1]  
  25.         # print name  
  26.             urllib.urlretrieve(i,name)  
  27.             print name,'is done'  
  28.         except:  
  29.             pass  
  30. ppk('http://www.ibtimes.com.cn/')  
» 转载请注明来源:若我若鱼 » Python 系列(17) 正则表达式

Leave a Reply

Your email address will not be published. Required fields are marked *

3 × 1 =