python re模块_Python re模块

news/2024/7/2 23:18:01

正则表达式元字符说明

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

^ 匹配字符串的开始

$ 匹配字符串的结束

[] 用来匹配一个指定的字符类别

? 对于前一个字符字符重复0次到1次

* 对于前一个字符重复0次到无穷次

{} 对于前一个字符重复m次

{m,n} 对前一个字符重复为m到n次

\d 匹配数字,相当于[0-9]

\D 匹配任何非数字字符,相当于[^0-9]

\s 匹配任意的空白符,相当于[ fv]

\S 匹配任何非空白字符,相当于[^ fv]

\w 匹配任何字母数字字符,相当于[a-zA-Z0-9_]

\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]

\b 匹配单词的开始或结束

模块函数说明即举例

re.compile 将正则表达式编译成pattern对象

compile(pattern, flags=0)

第一个参数:规则

第二个参数:标志位

re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None

match(pattern, string, flags=0)

第一个参数:规则

第二个参数:表示要匹配的字符串

第三个参数:标致位,用于控制正则表达式的匹配方式

re.search 匹配整个字符串,直到找到一个匹配

search(pattern, string, flags=0)

第一个参数:规则

第二个参数:表示要匹配的字符串

第三个参数:标致位,用于控制正则表达式的匹配方式

>>> import re

>>> pattern = re.compile(r'linuxeye')

>>> match = pattern.match('linuxeye.com')

>>> print match

>>> print match.group()

linuxeye

>>> m = pattern.match('linuxeye.com') #match匹配开头,没找到

>>> print m

None

>>> m = pattern.search('linuxeye.com') #search匹配整个字符串,直到找到一个匹配

>>> print m

>>> print m.group()

linuxeye

>>> m = re.match(r'linuxeye','linuxeye.com') #不用re.compile

>>> print m

>>> print m.group()

linuxeye

>>> m = re.match(r'linuxeye','www.linuxeye.com')

>>> print m

None

re.split 用于来分割字符串

split(pattern, string, maxsplit=0)

第一个参数:规则

第二个参数:字符串

第三个参数:最大分割字符串,默认为0,表示每个匹配项都分割

实例:分割所有的字符串

>>> import re

>>> test_str = "1 2 3 4 5"

>>> re.split(r'\s+',test_str)

['1', '2', '3', '4', '5']

>>> re.split(r'\s+',test_str,2) #分割前2个

['1', '2', '3 4 5']

>>> test_str = "1 . 2. 3 .4 . 5"

>>> re.split(r'\.',test_str)

['1 ', ' 2', ' 3 ', '4 ', ' 5']

>>> re.split(r'\.',test_str,3)

['1 ', ' 2', ' 3 ', '4 . 5']

re.findall 在目标字符串查找符合规则的字符串

findall(pattern, string, flags=0)

第一个参数:规则

第二个参数:目标字符串

但三个参数:后面还可以跟一个规则选择项

返回的结果是一个列表,建中存放的是符合规则的字符串,如果没有符合规则的字符串呗找到,就会返回一个空值

>>> import re

>>> test_mail = ' test03@gmail.net'

>>> mail_re = re.compile(r'\w+@g....\.[a-z]{3}')

>>> re.findall(mail_re,test_mail)

['test01@gmail.com', 'test02@gmail.org', 'test03@gmail.net']

re.sub 以正则表达式为基础的替换工作

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

第一个参数:规则

第二个参数:替换后的字符串

第三个参数:字符串

第四个参数:替换个数。默认为0,表示每个匹配项都替换

>>> test = 'linuxeye.com linuxeye.com'

>>> test_re = re.compile(r'\.')

>>> re.sub(test_re,'--',test)

'blog--linuxeye--com linuxeye--com'

>>> re.sub(test_re,'--',test,1)

'blog--linuxeye.com linuxeye.com'

Sun Oct 20 17:46:09 CST 2013


http://lihuaxi.xjx100.cn/news/242679.html

相关文章

CSS3颜色不透明度如何设置

web前端技术包含HTML和CSS样式,两者是相辅相成的,学习CSS样式不必可少,那么在学习CSS样式中,CSS3颜色不透明度如何设置?在CSS3之前,我们设置颜色的方式包含十六进制颜色(如#F00)、rgb模式颜色、或指定颜色的英文名称(…

MD5与Base64的思考

MD5加密是对任意长的数据使用MD5哈稀算法散列为4个32位组,若格式化为ASCII字符则为16字符,若格式化16进制表示,则为32字符. (MD5的具体算法请参阅相关书籍和资料)MD5广泛用于数据校验和完整性检验.且不可逆.理论上为抗碰撞的在2004年8月17日,MD5遭遇重创,山东大学的王小云做了…

org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.

动态代理因为namespace的地方写错了转载于:https://www.cnblogs.com/wth21-1314/p/6590968.html

修正的判定条件覆盖例题_如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?...

java测验的类型?黑盒测验?白盒测验?灰盒测验?白盒测验(White-box Testing,又称逻辑驱动测验,结构测验)是把测验目标看作一个翻开的盒子。运用白盒测验法进行动态测验时,需求测验软件产品的内部结构和处理进…

Java中父类方法重写有哪些需要注意的?

在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。 在上一节…

\\s+ split替换

出自: http://www.tuicool.com/articles/vy2ymm 详解 "\\s" 正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v] \f -> 匹配一个换页\n -> 匹配一个换行符\r -> 匹配一个回车符\t -> 匹配一个制表…

baidumap api MySQL_百度地图API开发笔记一(基础篇)

什么是百度地图API?百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用。百度地图API包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。测试js API代码(…

mysql 匹配 findinset

SELECT FS_ITEM_DESC FROM dictionary WHERE FS_TYPE prizeType AND FIND_IN_SET(FS_ITEM_CODE,(SELECT AWARDS FROM tb_textbook WHERE TEXTBOOK_ID 1)) FIND_IN_SET ,在一串有律字符串中查找关键字,返回匹配成功的行例 : FIND_IN_SET(1,1…