基础复习-正则表达式
.
匹配任意一个字符,换行符除外
\
代表字符本身,比如 a\.c
匹配a.c,\[
匹配[而不是正则中的[]
[...]
`匹配括号中出现的任意单个字符
[^...]
`不匹配方括号中列出的单个字符,比如[^123]匹配除123以外的字符
\d
匹配0-9任意一个数字
\D
匹配任意一个非数字的字符,等价于 [^\d]
\s
匹配任意一个空白字符,
\S
匹配任意一个非空白的字符
\w
匹配一个字母或数字,字符范围[A-Za-z0-9_]
\W
非单词字符
*
匹配前一个字符0次或1次或多次
+
匹配前一个字符1次或多次
?
匹配前一个字符0次或1次
{m}
匹配前一个字符m次
{m,n}
匹配前一个字符0-n次,最多n次
^
开头
$
结尾
\A
仅匹配字符串的开始
\b
匹配一个单词的边界,即单词到空格的位置,比如'st'可以匹配
‘test abc’中的st,但不能匹配‘tester abc’中的st
\B
与\b
相反,表示匹配非单词边界,如上例中可以匹配tester abc中是st,而不能匹配test abc中的st
\Z
匹配匹配字符串结束,存在换行的话明知匹配到换行前的结束字符
比如abc\Z匹配abc
|
或,逻辑匹配符
(...)
后向引用/分组匹配,小括号括起来的的正则表达式作为分组
(?P<number>)
分组引用,引用分组编号为number的分组
(?P=name)
分组引用,引用分组命名为name的分组
前向否定断言
后向否定断言
前向肯定断言
后向肯定断言
pattern对象
是一个编译好的正则表达式,不能直接实例化,必须使用re.compile()函数进行构造
p = re.compile()对正则表达式进行编译,返回一个Pattern对象
例子
从一个字符串中找出来ip
>>> s = "abc10.249.1.99hello192.168.1.101world"
>>> re.findall(r'[12]\d{1,2}\.\d{1,3}\.\d{1,3}\.\d{1,3}',s)
['10.249.1.99', '192.168.1.101']
>>> re.findall(r'[12]\d{1,2}\.\d{1,3}\.\d{1,3}',s)
['10.249.1', '192.168.1']
使用pattern的写法就是这样
>>> p = re.compile(r'[12]\d{1,2}\.\d{1,3}\.\d{1,3}')
>>> p.findall(s)
['10.249.1', '192.168.1']
更多学习笔记移步
https://www.cnblogs.com/kknote