正则表达式学习

正则表达式学习

推荐两个学习正则表达式的网站

https://codejiaonang.com/

https://regexr-cn.com/

  1. []中括号中表示字符

    如果只有一个[],后面没有其他字符了,那么就把[]中的字符全部匹配,每一个字符都会匹配需要的字符,

    如果[]后面又其他字符,那么就把[]中的字符集和后面内容结合起来

  • 还有[]中加-表示范围(比如[a-z],表示26个小写字母被匹配,[0-9a-z]在之前基础上,加上10个数字)

  • image4

  • 匹配特殊字符

    使用-表示区间,使用\表示转义

    image4

  • 取反

    有时候我们可能希望根据不会出现的字符定义字符组,所以在[]中使用 ^就可以排除

    image

image

快捷模式

快速匹配

数字 \d
字母 \w
空白 \s
单词边界 \b

快捷方式取反只需要将 比如 \w大写

在正则表达式中^表示一个字符串的开始,$表示一个字符串的结束

  • 任意字符

    .字符代表匹配任何单个字符,它只能出现在方括号以外

    :只有一个字符不能匹配,就是\n换行符

  • 可选字符

    在可选字符后加?,? 符号指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次

重复

大括号{}表示重复几遍

image16

在大括号中间的两个数字表示上限和下限,语法:{M,N}M是下界而N是上界。

image

有时候我们可能遇到字符组的重复次数没有边界

image

也可以简写,可以使用 + 匹配1个到无数个,使用 *代表0个到无数个。

image

遇到的两个常见的写法

.*贪婪匹配

.*?非贪婪匹配

多种匹配模式

实例 描述
[Pp]ython 匹配 “Python” 或 “python”。
rub[ye] 匹配 “ruby” 或 “rube”。
[abcdef] 匹配中括号内的任意一个字母。
[0-9] 匹配任何数字。类似于 [0123456789]。
[a-z] 匹配任何小写字母。
[A-Z] 匹配任何大写字母。
[a-zA-Z0-9] 匹配任何字母及数字。
[^au] 除了au字母以外的所有字符。
[^0-9] 匹配除了数字外的字符。
实例 描述
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
? 匹配一个字符零次或一次,另一个作用是非贪婪模式
+ 匹配1次或多次
* 匹配0次或多次
\b 匹配一个长度为0的子串
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
\b 匹配一个长度为0的子串

python正则表达式匹配字符串前面加的字母意思

1、字符串前加 u

例:u"我是含有中文字符组成的字符串。"

作用:

后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

2、字符串前加 r

例:r"\n\n\n\n”  # 表示一个普通生字符串 \n\n\n\n,而不表示换行了。

作用:

去掉反斜杠的转义机制。

(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )

应用:

常用于正则表达式,对应着re模块。

3、字符串前加 b

例: response = b'

Hello World!

' # b' ' 表示这是一个 bytes 对象

作用:

b" "前缀表示:后面字符串是bytes 类型。

用处:

网络编程中,服务器和浏览器只认bytes 类型数据。

如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

附:

在 Python3 中,bytes 和 str 的互相转换方式是
str.encode('utf-8')
bytes.decode('utf-8')

posted on 2021-02-06 19:30  猪猪侠的哥哥  阅读(163)  评论(0)    收藏  举报