1. import re  
  2. str = 'this'  
  3. text = 'this is test re'  
  4. #s = re.match(text.str)同下效果一样  
  5. #re.match与re.search的区别:re.match只匹配字符串的开始, 
  6. #如果字符串开始不符合正则表达式,则匹配失败, 
  7. #函数返回None;而re.search匹配整个字符串,直到找到一个匹配。 
  8. s = re.search(text,str)  
  9. #start()和end()可以获得匹配文本在字符串中的相应的索引  
  10. a = match.start()  
  11. b = match.end()  
  12. #a.re.palltern = str;a.string = text  
  13. print 'found "%s"\nin "%s"\nfrom %d to %d ("%s")' %(a.re.pattern,a.string,s,b,text[s:b])  
  14. ########运行结果#########  
  15. [root@localhost re]# python re1  
  16. found "this"  
  17. in "this is test re"  
  18. from 0 to 4 ("this")  
  19. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  20. \d 匹配任何十进制数;它相当于类 [0-9]。  
  21. \D 匹配任何非数字字符;它相当于类 [^0-9]。  
  22. \s 匹配任何空白字符;它相当于类 [ "t"n"r"f"v]。  
  23. \S 匹配任何非空白字符;它相当于类 [^ "t"n"r"f"v]。  
  24. \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。  
  25. \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。 
  26. + 匹配一个或者多个 一次或者多次 
  27. 例子:和urllib模块配合获取当前路由器里面下载速度最快的前三名  
  28. 路由用的是D-LINK,其他路由没试过,不知道能否成功  
  29. import re  
  30. import urllib  
  31. #admin:123456是路由器的账号和密码,10.10.11.1是路由器的地址  
  32. #后面这一节page=1&px=3&sf=1代表的是系统状态的内网监控  
  33. url = 'http://admin:123456@10.10.11.1/analyze.cgi?page=1&px=3&sf=1'  
  34. a = urllib.urlopen(url).read()  
  35. #print(a)  
  36. #findall接受2个参数,一个是匹配字符,一个是目标字符串,  
  37. ip = re.findall('10\.10\.\d+\.\d+', a,re.M)  
  38. ip1 = ip[0]  
  39. ip2 = ip[1]  
  40. ip3 = ip[2]  
  41. print (ip1,ip2,ip3)  
  42. ########运行结果#########  
  43. [root@localhost re]# python luyou  
  44. ('10.10.11.14''10.10.11.121''10.10.11.31')  

.:匹配换行符以外的任何单个字符

*:匹配任意单个或者多个字符

+:匹配位于+之前的一个或者多个字符

|:匹配位于|之前的或者之后的的字符

^:匹配行首

$:匹配行尾

?:匹配单个字符

\:转义字符

[]:匹配位于[]中的任何一个字符

():将位于()内的内容当做一个整体

{}:按{}中的字数匹配

re.I:h忽略大小写。

re.L:格局本地是设置而更改\w,\b,\s,\W,\B,\S的匹配内容。

re.M:多行匹配

re.S:使用“.”元字符匹配换行符

re.U:匹配Unicode字符

re.X:忽略pattern中的空格,并且可以使用“#”注释