python之正则
来源:互联网 发布:windows live登陆 编辑:程序博客网 时间:2024/05/17 22:24
概括:
python使用re正则模块来实现正则表达式,import re。
元字符含义:
一、字符串里含有什么字符
1、首先确定一下元字符(不是代表字面意思的字符)有哪些。
\ 代表转义
| 代表分支选择
( ) 代表捕捉
[ ] 代表字符数组
] 比较特殊,只有前面有相应的[ 和 { 时,才会是元字符,否则就是普通字符。()没有使用此规则
^ $ #行首,行尾
* + ? #代表数量
. #代表任意字符
2、单个字符的描述
除了在上面提到的元字符,想要匹配什么字符直接写就可以了,例如'a' 匹配 正则表达式 a。
而要想匹配元字符本身只需要在前面加上转义字符(\)就可以了。
3、非打印字符及某类字符的表示
非打印字符和标准的基本一直,列举如下:
\d 匹配任何数字,等同于[0-9],注意这里的-只有在字符数组里才是元字符。
\D 匹配任何非数字,等同于[^0-9]。
\s 匹配任何空白字符,等同于[\f\t\n\r ]
\S 匹配任何非空白字符,等同于[^\f\t\n\r ]
\t 匹配tab
\w 匹配任何字母数字或者下划线
\W 匹配上面以外的
二、字符串的位置
1、基本位置描述符
^ 匹配字符串的起始位置
\A 匹配字符串的起始位置
$ 匹配字符串结束位置。
\Z 匹配字符串的结束位置。
\b 匹配单词边界。
(?#) 注释
(?=) 匹配一个正则位置
(?!) 不匹配一个正则位置
三、字符串里字符的数量
* 0次或者多次 (尽可能的多匹配)
? 0次或者1次 (尽可能的多匹配)
+ 1次或者多次 (尽可能的多匹配)
{n} n次
{m,n} m次到n次
{m,} m次以上 注意 {,n}是错误的写法。
在以上的数量修饰符的最后再加一个?就是尽可能的少匹配。
四、举例
import re if re.match(r"\d+","a99b"): #match必须是从头匹配 print "match ok!" if re.search(r"\d+","a99b"): print "search ok!" print re.search(r"\d+","a99b").group() #group返回匹配的字符串 print re.search(r"(\d+)(\w)","a99b98c").groups() #返回子组字符串 print re.findall(r"\d+","a99b88c") #findall直接返回匹配的字符串列表 print re.sub(r"\d+","num","a99b88c") #把99 和 88 都替换成num
五、附加选项
import re if re.match(r"a","A"): print "test1 ok" if re.match(r"(?i)a","A"): #附加选项必须在正则表达式最前面(?i)代表忽略大小写,对应re.I print "test2 ok" #ma=re.compile("a",re.I) #if ma.match("A"): # print "good!" if re.search(r"^\d","abcd\n1234"): #\A,\Z只匹配字符串的开头和结尾,不受(?m)的影响 print "test3 ok" if re.search(r"(?m)^\d","abcd\n1234"): #每一行的开头和结尾都认为是字符串的开始和结尾,对应re.M print "test4 ok" print re.search(r".+","abcd\nefg").group() #输出abcd print re.search(r"(?s).+","abcd\nefg").group() #输出abcd\nefg,对应re.S if re.match(r"\w","我"): print "test5 ok" if re.match(r"(?u)\w","我"): #匹配unicode,对应re.U print "test6 ok" #(?x),re.X 对应可以在正则中插入空白符 #(?L),re.L 对应\w等匹配本地字符集
- python之正则表达式
- python之正则
- python之正则表达式
- python之正则匹配
- Python之正则表达式
- Python之正则表达式
- python之正则表达式
- python之正则表达式
- python之正则表达式
- Python之正则表达式
- Python之正则表达式
- Python之正则表达式
- Python之正则表达式
- python 之正则表达式
- Python之正则表达式
- Python 之 正则表达式
- python之正则表达式
- Python 之正则表达式
- 析构函数可以是纯虚函数
- java连接mysql增加人员信息
- 在工厂模式里面利用反射机制动态调用对象方法
- android知识点
- redhat系统 重置root密码
- python之正则
- 《Java编程思想》学习笔记7——泛型编程基础
- SQL2005 存储过程学习
- JAVA JDBC事务提交的疑问
- RFileWriteStream RFileReadStream
- The way to enable django + uwsgi + nginx
- C#如何制作水晶报表简单易懂示例
- 内核中用于数据接收的结构体struct msghdr
- 深入浅出CRC——模2运算