正则表达式 Python检索正则的编写


正则表达式的具体应用

1.匹配单个字符与数字

.                         匹配除换行符以外的任意字符

[0123456789]    []是字符集合,表示匹配方括号中所包含的任意一个字符

[sunck]              匹配's','u','n','c','k'中任意一个字符

[a-z]                  匹配任意小写字母

[A-Z]                  匹配任意大写字母

[0-9]                    匹配任意数字,类似[0123456789]

[0-9a-zA-Z]          匹配任意的数字和字母

[0-9a-zA-Z_]        匹配任意的数字、字母和下划线

[^sunck]                匹配除了sunck这几个字母以外的所有字符,中括号里的^称为脱字符,表示不匹配集合中的字符

[^0-9]          匹配所有的非数字字符  ( ~去除所有的数字 )

\d              匹配数字,效果同[0-9]

\D              匹配非数字字符,效果同[^0-9]

\w              匹配数字,字母和下划线,效果同[0-9a-zA-Z_]

\W              匹配非数字,字母和下划线,效果同[^0-9a-zA-Z_]

\s              匹配任意的空白符(空格,换行,回车,换页,制表),效果同[ \f\n\r\t]

\S              匹配任意的非空白符,效果同[^ \f\n\r\t]

print(re.findall("\d", "_sunck is 66a go8od man 3"))

两个字符串相互匹配


2.锚字符(边界字符)

^ 行首匹配,和在[]里的^不是一个意思  (在re.M模式下会匹配每一行的行首)

$    行尾匹配

Pic - 1

\A 匹配字符串开始,它和^的区别是,\A只匹配整个字符串的开头,即使在re.M模式下也不会匹配它行的行首(只整体字符串的开头)

\Z    匹配字符串结束,它和$的区别是,\Z只匹配整个字符串的结束,即使在re.M模式下也不会匹配它行的行尾

print(re.findall("^sunck", "sunck is a good man\nsunck is a nice man", re.M))

print(re.findall("\Asunck", "sunck is a good man\nsunck is a nice man", re.M))

print(re.findall("man$", "sunck is a good man\nsunck is a nice man", re.M))

print(re.findall("man\Z", "sunck is a good man\nsunck is a nice man", re.M))

Pic - 2

\b 匹配一个单词的边界,也就是值单词和空格间的位置

      'er\b'可以匹配never,不能匹配nerve

\B    匹配非单词边界


Pic - 3

未完待续    2019年10月5日17:23:57