Rumah > pembangunan bahagian belakang > Tutorial Python > Python 中正则表达式详解

Python 中正则表达式详解

小云云
Lepaskan: 2017-12-18 15:05:40
asal
2118 orang telah melayarinya


正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家。

操作符 说明 实例
. 表示任何单个字符
[ ] 字符集,单个字符取值范围 [abc]表示a或b或c; [a-z]表示a到z单个字符
[^ ] 非字符集,单个字符排除范围 [^abc]表示非a或非b或非c
* 前一个字符的0次或无限次扩展 abc*表示ab、abc、abcc、abccc...
+ 前一个字符的1次或无限次扩展 abc+表示abc、abcc、abccc...
? 前一个字符的0次或1次扩展 abc?表示ab、abc
| 左右表示任意一个 abc|def 表示abc或def
{m} 前一个字符的m次扩展 ab{2}表示abcc
{m,n} 前一个字符的m至n次扩展(含n) ab{1,2}表示abc、abcc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用|操作符 (abc|def)表示abc或def
\d 数字,等价于[0-9]
\w 单词字符,等价于[A-Za-z0-9_]

如果熟悉上面的操作符的话,下面的例子就不难了。

1.只能输入数字:^[0-9]*$

2.只能输入n位的数字:^\d{n}$

3.只能输入至少n位的数字:^\d{n,}$

4.只能输入m~n位的数字:^\d{m,n}$

5.只能输入零和非零开头的数字:^(0|[1-9][0-9]*)$

6.只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

7.只能输入有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

8.只能输入非零的正整数:^+?[1-9][0-9]*$


【Python3正则表达式】

函数 说明
re.match() 从字符串的起始位置匹配一个模式,如果起始位置匹配不成功的话,match()就返回none。
re.search() 扫描整个字符串并返回第一个成功的匹配。
re.sub() 用于替换字符串中的所有匹配正则表达式的子串,返回替换后的字符串
re.findall() 搜索字符串,以列表形式返回全部能匹配的子串
re.split() 将字符串按照正则表达式匹配结果进行切割,返回列表
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
>>> match= re.findall(r'[1-9]\d{5}','100081BIT  BIT10008676')>>> print(match)
['100081', '100086']>>> match = re.split(r'[1-9]\d{5}','100081BIT  BIT10008676')>>> match
['', 'BIT  BIT', '76']>>> match = re.split(r'[1-9]\d{5}','100081BIT  BIT10008676',maxsplit=1)>>> match
['', 'BIT  BIT10008676']

>>>for m in re.finditer(r'[1-9]\d{5}','100081BIT  BIT10008676'):       if m:
            print(m.group(0))    
100081100086
Salin selepas log masuk
Salin selepas log masuk

re.match与re.search的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。


这里写图片描述

操作符说明实例
.表示任何单个字符
[ ]字符集,单个字符取值范围[abc]表示a或b或c; [a-z]表示a到z单个字符
[^ ]非字符集,单个字符排除范围[^abc]表示非a或非b或非c
*前一个字符的0次或无限次扩展abc*表示ab、abc、abcc、abccc...
+前一个字符的1次或无限次扩展abc+表示abc、abcc、abccc...
?前一个字符的0次或1次扩展abc?表示ab、abc
|左右表示任意一个abc|def 表示abc或def
{m}前一个字符的m次扩展ab{2}表示abcc
{m,n}前一个字符的m至n次扩展(含n)ab{1,2}表示abc、abcc
^匹配字符串开头^abc表示abc且在一个字符串的开头
$匹配字符串结尾abc$表示abc且在一个字符串的结尾
( )分组标记,内部只能使用|操作符(abc|def)表示abc或def
\d数字,等价于[0-9]
\w单词字符,等价于[A-Za-z0-9_]

如果熟悉上面的操作符的话,下面的例子就不难了。

1.只能输入数字:^[0-9]*$

2.只能输入n位的数字:^\d{n}$

3.只能输入至少n位的数字:^\d{n,}$

4.只能输入m~n位的数字:^\d{m,n}$

5.只能输入零和非零开头的数字:^(0|[1-9][0-9]*)$

6.只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

7.只能输入有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

8.只能输入非零的正整数:^+?[1-9][0-9]*$


【Python3正则表达式】

函数说明
re.match()从字符串的起始位置匹配一个模式,如果起始位置匹配不成功的话,match()就返回none。
re.search()扫描整个字符串并返回第一个成功的匹配。
re.sub()用于替换字符串中的所有匹配正则表达式的子串,返回替换后的字符串
re.findall()搜索字符串,以列表形式返回全部能匹配的子串
re.split()将字符串按照正则表达式匹配结果进行切割,返回列表
re.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
>>> match= re.findall(r'[1-9]\d{5}','100081BIT  BIT10008676')>>> print(match)
['100081', '100086']>>> match = re.split(r'[1-9]\d{5}','100081BIT  BIT10008676')>>> match
['', 'BIT  BIT', '76']>>> match = re.split(r'[1-9]\d{5}','100081BIT  BIT10008676',maxsplit=1)>>> match
['', 'BIT  BIT10008676']

>>>for m in re.finditer(r'[1-9]\d{5}','100081BIT  BIT10008676'):       if m:
            print(m.group(0))    
100081100086
Salin selepas log masuk
Salin selepas log masuk

re.match与re.search的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。


这里写图片描述

相关推荐:

关于js正则表达式详解

php正则表达式详解_PHP教程

非常重要的php正则表达式详解,php正则表达式详解

Atas ialah kandungan terperinci Python 中正则表达式详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan