首页技术python正则表达式生成器,正则表达式转换工具

python正则表达式生成器,正则表达式转换工具

编程之家2026-06-12882次浏览

大家好,关于python正则表达式生成器很多朋友都还不太明白,今天小编就来为大家分享关于正则表达式转换工具的知识,希望对各位有所帮助!

python正则表达式生成器,正则表达式转换工具

Python re模块 正则表达式之compile函数

为了重复利用同一个正则对象,需要多次使用这个正则表达式的话,使用re.compile()保存这个正则对象以便复用,可以让程序更加高效。

1)re.compile

参数:

re.I忽略大小写

re.L表示特殊字符集 w, W, b, B, s, S依赖于当前环境

re.M多行模式

python正则表达式生成器,正则表达式转换工具

re.S即为'.'并且包括换行符在内的任意字符('.'不包括换行符)

re.U表示特殊字符集 w, W, b, B, d, D, s, S依赖于 Unicode字符属性数据库

re.X为了增加可读性,忽略空格和'#'后面的注释

案例:

在上面,当匹配成功时返回一个 Match对象,其中:

2)re.findall

python正则表达式生成器,正则表达式转换工具

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

注意: match和 search是匹配一次 findall匹配所有。

参数:

案例:

3)re.finditer

和 findall类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

案例:

4)re.split

split方法按照能够匹配的子串将字符串分割后返回列表。

案例:

从上篇Python re模块正则表达式到这篇,我们已经把常用的正则匹配的方法学会了。

关注我,坚持每日积累一个技巧,长期坚持,我们将会不断进步。

#python##程序员##请回答,你的年度知识点##教育听我说##计算机#

python的正则表达式

1,正则表达式的一些内容

正则表达式主要是用来匹配文本中需要查找的内容,例如在一片文章中找出电话号码,就中国的来说11位纯数字(不说座机),则使用"\d{11}"意味匹配数字11次,就能准确的查找出文本中的电话号码.还有就是在编写网络爬虫的时候需要提取很多超链接再次进行爬取,使用正则表达式就很方便.直接匹配http开头就行,当然也可以使用beautifulsoup的select方法.

看下面的程序看看正则表达提取文本中的邮箱:

\w匹配字母,数字,下划线

+匹配1次或者多次

re是正则表达式的工具包,工具包出错的话在anaconda的命令行输入"pip install re"安装,其他的工具包也是如此.

re.compile()中的r示意\不是转义字符,也就是保持后面字符串原样,findall返回一个列表.下面还有一个版本的程序略有不同.

compile的另一个参数re.IGONORECASE(忽略大小写),还可以是re.DORALL,多行模式,具体功能也是模糊不清,不过在使用通配符.匹配的时候加上re.DOTALL参数能够匹配换行.如果希望忽略大小写和多行模式都开启可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL).

表达式使用(),对匹配到的内容分为3组也就是(\w+)出现字母,数字,下划线一次或多次,这个分组就是下面使用match对象的grou()方法的时候的参数.不给参数和参数0都是得到整个匹配到的内容,参数1得到第一个括号匹配到的内容,以此类推参数2和3,如果没有括号分组的话使用参数会出现错误.

search()查找和正则式匹配的内容,只匹一次后面的那个找不到.返回一个match对象

\w匹配字母,数字,下划线

\W匹配字母,数字.下划线之外的所有字符

\d匹配数字

\D匹配非数字

\s匹配空格,制表符,换行符

\S匹配除空格制表符,换行符之外的其他字符

[.... ]定义自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配单词.

{最少次数,最多次数},例如{3,9}匹配3-9次,{,10}匹配0-10次.默认为匹配最多次数(贪心匹配),非贪心模式在后面加上问号

?可选 0次或者1次吧

+匹配1次或多次

*匹配0次或者多次

^判断开头 ^\d如果待匹配串是数字开头则返回第一个数字

$判断结尾 \d$如果待匹配串是数字结尾则返回最后一个数字

.通配符,匹配除换行之外的所有字符

\d{11}匹配数字11次

.*匹配所有字符除换行

[a-zA-Z0-9._%+-]小写和大写字母、数字、句点、下划线、百分号、加号或短横

[a-zA-Z]{2,4}匹配字母 2- 4次

Python其实很简单 第十一章 正则表达式

正则表达式是一个特殊的字符序列,它用来检查一个字符串是否与某种模式匹配。正则表达式在编译程序中至关重要,但并不是每个人都需要特别深入的学习和掌握。在此,只介绍一些最基本的应用。

1、元字符

元字符是构成正则表达式的一些特殊字符。在正则表达式中,元字符被赋予了新的含义。

下面介绍一些常用的元字符及其含义:

.匹配除换行符以外的任意字符。

w匹配字母、数字、下划线或汉字。

W匹配w所匹配的字符以外的字符。

s匹配单个空白符(包括Tab键和换行符)。

S匹配除s匹配的字符以外的字符。

d匹配数字。

b匹配单词的分界符,如:空格、标点符号或换行符。

^匹配字符串的开始

$匹配字符串的结束

2、限定符

限定符是在正则表达式中用来指定数量的字符。常用的限定符有:

?匹配前面的字符0或1次。如:zo?m可以匹配zom和zm,但不能匹配 zoom

+匹配前面的字符1或n次。如:zo?m可以匹配zom和zoom,但不能匹配zm

*匹配前面的字符0或n次。如:zo?m可以匹配zom、zoom和zm

{n}匹配前面的字符n次。如:zo{2}m可以匹配zoom,但不能匹配zom和zm

{n,}匹配前面的字符至少n次。如:zo{1,}m可以匹配zom和zoom,但不能匹配zm

{n,m}匹配前面的字符至少n次,最多m次。如:zo{1,2}m可以匹配zom和zoom,但不能匹配zm

3、方括号”[ ]”的用途

方括号“[ ]”里可以列出某个字符范围。如:[aeiou]表示匹配任意一个元音字母,[zqsl]表示匹配姓氏“赵钱孙李”的拼音第一个字母。

4、排除字符

方括号”[ ]”中的“^”字符表示排除的意思,如:[^aeiou]表示匹配任意一个非元音字母的字符。

5、选择字符

字符“|”相当于“或”。如:(^d{3}[-]d{8})|(^d{4}[-]d{7})$可以匹配形如”-”或“-”的电话号码格式。

6、转义字符

对于已经用于定义元字符和限定符的字符,需要加转义符“”来表示。

如:为了匹配形如“192.168.0.1”的IPv4地址(1~255.0~255.0~255.0~255),可以用这样的正则表达式:^(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

这里解释一下第一段IP地址的规则,取值范围为1~255,可分解为以下情况:

250~255:25[0-5];

200~249:2[0-4][0-9];

100~199:[01]{1}[0-9]{2};

0~99: [0-9]{1}[1-9]

再加上”.”:.

其他三段地址和第一段相似。

7、“()”可以用于分组

在正则表达式中,用“()”括起来的部分是一个整体。

8、r(或R)的意义

在正则表达式中,为了保证模式字符串为原生字符串(没有经过加工处理的字符串),可以在模式字符串前加上一个字符‘r’或‘R’。例如:

#这里用到对的re.match()方法接下来介绍

>>> import re#导入re模块

>>> re.match('bPy[a-z]+','Python')#表达式'bPy[a-z]+'不能匹配’Python’

>>> re.match('bPy[a-z]+','Python')#表达式'bPy[a-z]+'可以匹配’Python’

在上述代码中,原本要用作匹配单词开始或结束的元字符’b’在表达式中字符串中会被视为转义一个字符‘b’,为了转义’b’就不得不再加一个’’符号。

也可以采用下面的方法:

>>> re.match(r'bPy[a-z]+','Python')#加字符’r’,可以保证原生字符串

9、match()方法

Match()方法尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回 none。

语法格式:

re.match(pattern, string, [flags])

其中,pattern表示匹配的正则表达式;string是要匹配的字符串;flags表示标志位,用于控制正则表达式的匹配方式,如:re.I表示不区分大小写。

例:

import re#导入re模块

print(re.match('www','www.python.org/').span())#span()函数可以获取匹配的位置

print(re.match('org','www.python.org'))

输出结果为:

(0, 3)#在位置0到3(不包括3)匹配成功

None#从起始位置未能匹配成功

10、search()方法

search()方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,则返回Match对象,否则返回None。

语法格式:

re.search(pattern, string, [flags])

其中,pattern表示匹配的正则表达式;string是要匹配的字符串;flags表示标志位,用于控制正则表达式的匹配方式,如:re.I表示不区分大小写。

例如:

>>> re.search(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.')

可以看出,目标字符串“It's easy to use Python, but it's not easy to learn Python.”中一共有两个‘Python’,search()方法可以从字符串的起始位置开始查找到‘Python’,当找到第一个匹配值后就停止查找,返回位置信息。

match()和search()的比较

match()要求目标字符串的起始位置就能匹配,search()对目标字符串全段进行逐次匹配,只要首次匹配成功就停止匹配。

请看下例:

>>> import re

>>> print(re.match(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

输出结果:None

11、findall()方法

findall()方法用于在整个字符串中搜索所有匹配的值,如果匹配成功,则返回以匹配值为元素的列表,否则返回空列表。

语法格式:

re.findall(pattern, string[, flags])

其中,pattern表示匹配的正则表达式;string是要匹配的字符串;flags表示标志位,用于控制正则表达式的匹配方式,如:re.I表示不区分大小写。

例:

>>> import re

>>>print(re.findall(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))

输出结果:['Python','Python']

可以看出,findall()的结果没有指出匹配的具体位置。

12、正则表达式的应用

字符串替换

这里要用到sub()方法。它的语法格式如下:

re.sub(pattern, repl, string [,count] [,flgs])

其中,pattern是模式字符串;repl是用于替换的字符串;string是原字符串;可选参数count为模式匹配后替换的最大次数,省缺表示替换所有的匹配;可选参数flags的意义与前面的方法的该参数一致。

例:

>>> import re

>>> str1='x=36.567 y=123.234'

>>> str2=re.sub('.d+','',str1)#用空格代替小数点及其后的数字

>>> print(str2)

输出结果:x=36 y=123

分隔字符串

这里要用到split()方法。它的返回值为一个列表,它的语法格式如下:

re.split(pattern, string [,maxsplit] [,flgs])

其中,pattern是模式字符串;string是原字符串;可选参数maxsplit为最大拆分次数,省缺表示拆分所有的匹配;可选参数flags的意义与前面的方法的该参数一致。

例:

>>> import re

>>> str='白日依山尽,黄河入海流。欲穷千里目,更上一层楼!'

>>> re.split(r',|。|!',str)#按照“,”、“。”、“!”分隔字符串。

['白日依山尽','黄河入海流','欲穷千里目','更上一层楼','']

注意,返回值列表中多出了一个空字符。

python正则表达式生成器和正则表达式转换工具的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

小鱼人皮肤(小鱼人最建议买的5个皮肤)人工智能ai对联?人工智能开发需要学Java吗