python正则表达式(一)

2017-10-09  本文已影响0人  伟大的洪立

为什么要使用正则表达式

import re  # 引入re模块
dir(re)   # 查看方法属性
  re.match(p, str) # p 匹配格式

* 匹配所有

Paste_Image.png

. 匹配任意一个字符(\n除外)

Paste_Image.png

元字符
.匹配除换行符以外的所有字符
\S匹配任意非空字符
\d匹配数字
\D匹配非数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
[]匹配[]中列举的字符
\w匹配字母或数字下划线或汉字0-9,a-z,A-Z, _(下划线),汉字和其他国家的语言符号
\W匹配非字母或数字或下划线或汉字,跟\w正好相反
\s匹配任意的空白符

Paste_Image.png

字符转义

重复

Paste_Image.png

反义

Paste_Image.png

分组

re.match("\d+(183|192|168)\s","452183 ")

re.match("\d+(183|192|168)\s","452183 ").group()

re.match("\d+(183|192|168)\s","452183 ").group(1) #注意当输入1的结果

re.match("\d+(183|192|168)\.(li|wang|liu)","452168.wang").group(2) 

re.match("(.*)-(\d+)","0931-5912872 ").group(2) #小括号的使用场景,特别方便

re.match("<[a-zA-Z]*>\w*</[a-zA-Z]*>","<a>liujianhong</a>") #看似正确,其实Error

re.match("<[a-zA-Z]*>\w*</[a-zA-Z]*>","<a>liujianhong</html>") #这个就是漏洞

re.match(r"<([a-zA-Z] *)>\w*</ \1>","<a>liujianhong</html>") #此时\1表示第一个括号中的值

re.match("<([a-zA-Z] *)>\w*</ \\1>","<a>liujianhong</html>") #这样也行

后向引用(了解)

  re.match(r"<(\w*)><(\w*)>.*</\2></\1>","<a><span>liujianhong</span></a>")


  re.match(r"<(?P<n1>\w*)><(?P<n2>\w*)>.*</(?P=n2)></(?P=n1)>","<a><span>liujiang</span></a>")

注意:?P<name> 和?P=name中的P必须大写。

上一篇下一篇

猜你喜欢

热点阅读