正则表达式 常用的不常用的都在这了

. 匹配任意一个字符,换行符除外

\ 代表字符本身,比如 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']
posted @ 2022-04-05 19:06  我是一言  阅读(32)  评论(0编辑  收藏  举报