python 正则表达式

1.特殊符号和字符

1.1 特殊符号

说明

样例

^或(\A)

匹配字符串的开始

^hehe

$或(\Z)

匹配字符串的结尾

txt$

re1|re2

ha|he

.

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

a1b,a2b,a#b

*

匹配(前面出现的正则表达式)0次或多次

[A-Za-z0-9]*

+

匹配(前面出现的正则表达式)1次或多次

[a-z]+\.com

?

匹配(前面出现的正则表达式)0次或1次

goo?

{N}

匹配(前面出现的正则表达式)N次

[0-9]{3}

{M,N}

匹配(前面出现的正则表达式)M次或N次

[0-9]{5,9}

[...]

匹配字符组里出现的任意一个字符

[aeiou]

[..x-y..]

匹配从字符x到y中的任意一个字符

[0-9],[A-Za-z]

[^...]

不匹配此字符集中出现的任何一个字符,包括某一范围的字符

[^aeiou],[^A-Za-z0-9]

(*|+|?|{})?

用于上面出现的任何“非贪婪”。版本重复匹配次数符号

.*?[a-z]

(...)

匹配括号中正则表达式,并保存为子组

([0-9]{3})?,f(oo|u)bar

1.2 特殊字符

说明

样例

\d

匹配任何数字;(\D 与之相反,匹配任何非数字[^0-9])

\d+.txt

\w

匹配任何数字和字符(包括汉字),(\W 与之相反)

[A-Za-z_]\w+

\s

匹配任何空白符,(\S与之相反)

of\sthe

\b

匹配单词边界,(\B与之相反)

\bThe\b

\nn

匹配已保存的子组(参考(...))

price:\16

\c

逐一匹配特殊字符c(即取消它的特殊含义)

\.,\\,\*

2. 常见字符详解

2.1 匹配任意一个单个的字符(.)

..     # 任意两个字符
\.     # 匹配英文句号(.)

2.2 (-)与(^)

[^\t\n]  # 除制表符TAB和换行符以外的任意一个字符
["-a]    # 在"和a之间的任意一个字符(ASCII码值在34-97之间)

2.3 常见案例

(1)匹配IP:
(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])
(2)匹配电话号码:
eg:800-555-1212
\d{3}-\d{3}-\d{4}
(3)匹配邮箱:
eg: [email protected]
\w+@\w+\.com
(4)匹配浮点型
eg: 2,100,0.103
\d+(\.\d*)?

3. re 模块核心函数和方法

函数

描述

备注

compile(pattern,flags=0)

对正则表达式pattern进行编译

match(pattern,string,flags=0)

在字符串string中匹配pattern;必须是从开头即匹配

search(pattern,string,flags=0)

在字符串string中搜索pattern的第一次出现

findall(pattern,string[,flags])

在字符串string中搜索pattern的所有(非重复)出现,结果以列表方式返回

finditer(pattern,string[,flags])

与findall() 相同,结果以迭代器方式返回

split(pattern,string,max=0)

使用pattern中的分隔符,把字符串string分隔为一个列表

sub(pattern,repl,string,max=0)

把字符串string中所有匹配pattern的地方替换成repl

group(num=0)

返回全部匹配对象(或指定编号是num的子组)

groups()

返回一个包含全部匹配的子组元组

4. 匹配与搜索

(1)匹配

试图从整个字符串的开头进行匹配

(2)搜索

可从一个字符串的任意位置开始匹配

5. 一个好用工具

https://regex101.com/r/hYaEhK/1

python 正则表达式_第1张图片

你可能感兴趣的:(python,正则表达式)