0
点赞
收藏
分享

微信扫一扫

python安全工具开发笔记(一)——python正则表达式


一、re 库 绍

python通过re模块提供对正则表达式的支持:
1、先将正则表达式的字符串形式编译为Pattern实例;
2、使用Pattern实例处理文本并获得匹配结果
3、使用实例获得信息,进行其他的操作

示例一:

一致认为 第一个代码运行最快

python安全工具开发笔记(一)——python正则表达式_字符串


第二个代码运行比较快

示例二:

python安全工具开发笔记(一)——python正则表达式_服务器_02

二、正则表达式字符介绍

字符

一般字符

匹配自身

abc

abc

.

匹配任意换行符“\n”以外的字符。

在DOALL模式中也能匹配换行符

a.c

abc

\

转义字符,是最后一个字符改变原来的意思。

如果字符串中有字符 * 需要匹配,可以使用\*或者字符集[*]

a\.c

a\\c

a.c

a\c

[...]

字符集(字符类)。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c],第一个字符如果是^则表示取反,如[^abc]表示不是abc的其它字符。

所有的特殊字符在字符集中都失去原有的特殊含义。在字符集中如果要使用]、-或^,可以在前面加上反斜杠

a[bcd]e

abe

ace

ade

示例:

python安全工具开发笔记(一)——python正则表达式_python_03

预定义字符集(可以写在[...]中)

\d

数字:[0-9]

a\dc

a1c

\D

非数字:[^\d]

a\Dc

abc

\s

非空字符:[<空格>\t\r\f\v]

a\sc

a c

\S

非空白字符:[^\s]

a\Sc

abc

\w

单词字符:[A-Za-z0-9]

a\wc

abc

\W

非单词字符:[^\w]

a\Wc

a c

示例:

python安全工具开发笔记(一)——python正则表达式_python_04

数量词(用在字符或(...)之后)

*

匹配前一个字符0次或者无限次

abc*

ab

abccc

+

匹配前一个字符1次或无限次

abc+

abc

abccc

?

匹配前一个字符0次或1次

ab?

ab

abc

{m}

匹配前一个字符m次

ab{2}c

abbc

{m,n}

匹配前一个字符m至n次

m和n可以省略

ab{1,2}c

abc

abbc

逻辑、分组

|

代表左右表达式任意匹配一个

它总是先尝试匹配左边的表达式,一旦成功匹配就跳过右边的表达式

如果 | 没有包括在()中,则它的范围是整个表达式

abc|def

abc

def

(...)

被括起来的表达式将做为分组,从表达式左边开始每遇到一个分组的左括号,编号 +1

分组表达式做为一个整体,可以后接数量词。表达式中 | 仅在该组中有效

(abc){2}

a(123|456)c

abcabc

a456c

iLmsux(编译选项指定)

re.I

忽略大小写

re.L

使用预定字符类 \w\W\b\B\s\S 取决当前区域设定

re.M

多行模式改变 ^ 和 $ 的行为

re.S

.任意匹配模式

re.U

使用预定字符类 \w\W\b\B\s\S\d\D 取决Unicode定义的字符属性

re.X

详细模式,可以多行,忽略空白字符,并且可以加入注释

贪婪模式与非贪婪模式介绍
正则表达式通常用于在文本中查找匹配的字符串。Python里的数量词默认是贪婪的,意思是总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。
例如:正则表达式“ab*”如果用于查找“abbbc",将找到“abbb”。而如果使用非贪
婪方法“ab*?”,将找到“a”。


举报

相关推荐

0 条评论