博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式
阅读量:4027 次
发布时间:2019-05-24

本文共 1610 字,大约阅读时间需要 5 分钟。

正则表达式:
导入模块 import re
re.match(正则表达式,要匹配的字符串)
match方法从左到右匹配,有个不一样就结束方法
若字符串匹配正则表达式,则match方法返回匹配对象(Match Object),
否则返回None(注意不是空字符串"")
匹配对象Macth Object具有group方法,用来返回字符串的匹配部分
表示字符
.
匹配任意1个字符(除了\n)
[ ]
匹配[ ]中列举的字符  
[23456]匹配2,3,4,5,6
[^23456]不是23456
[a-z5-9]匹配a到z,5到9
\d
匹配数字,即0-9                    ===[0-9]
\D
匹配非数字,即不是数字             ====[^0-9]
\s
匹配空白,即 空格,tab键  
\S
匹配非空白
\w
匹配单词字符,即a-z、A-Z、0-9、_   ===[a-zA-Z0-9]
\W
匹配非单词字符
表示数量
*
匹配前一个字符出现0次或者无限次,即可有可无   
/d*表示出现0次或多次数字
+
匹配前一个字符出现1次或者无限次,即至少有1次
?
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m}
匹配前一个字符出现m次
{m,}
匹配前一个字符至少出现m次
{m,n}
匹配前一个字符出现从m到n次
原始字符串
Python中字符串前面加上 r 表示原生字符串
正则中加个r表示原生字符串
例 re.match(r"\\\","\\\")匹配三个\
表示边界
^
匹配字符串开头    ^a:以a开头
$
匹配字符串结尾    a$:以a结尾       例:手机号正则:r"1[3578]\d{9}$
\b
匹配一个单词的边界   
单词边界就是单词和符号之间的边界
这里的单词可以是中文字符,英文字符,数字;
符号可以是中文符号,英文符号,空格,制表符,换行  
\B
匹配非单词边界
匹配分组
|
匹配左右任意一个表达式   例 匹配0-100 :r"[1-9]?\d?$|100$"
(ab)
将括号中字符作为一个分组     常与group(1)或者groups()[0]使用
\num
引用分组num匹配到的字符串    常与(ab)使用 \2就是第二个()里面的内容
(?P<name>)
分组起别名
(?P=name)
引用别名为name分组匹配到的字符串
search:查询字符串中匹配的正则表达式的内容,从左到右,查询到后就停止
findall:查询字符串中所有符合正则表达式的内容
sub 将匹配到的数据进行替换   替换的可以是函数
re.sub(r"\d+", '998', "python = 997")
def replace(result):
s=int(result.group())+50
return str(s)
re.sub(r"\d+",replace,   "python = 997")
split 根据匹配进行切割字符串,并返回一个列表
ret = re.split(r":| ","info:xiaoZhang 33 shandong")
print ret
ret=['info','xiaoZhang','33','shandong']
Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
非贪婪则相反,总是尝试匹配尽可能少的字符。
在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
练习:
http://www.interoem.com/messageinfo.asp?id=35替换成http://www.interoem.com/
解:
s="http://www.interoem.com/messageinfo.asp?id=35"
result = s.sub(r"(http://.+?/).*" ,lambda x : x.group(1),s)

转载地址:http://gxobi.baihongyu.com/

你可能感兴趣的文章
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++指针常量与常量指针详解
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
STL::deque以及由其实现的queue和stack
查看>>
CS4344驱动
查看>>
WAV文件解析
查看>>
DAC输出音乐2-解决pu pu 声
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
flutter-实现一个下拉刷新上拉加载的列表
查看>>
android 代码实现圆角
查看>>
postman调试webservice接口
查看>>
flutter-解析json
查看>>
android中shader的使用
查看>>