python正则表达式系列(1)——正则元字符
2017-04-22 07:49
363 查看
本文主要介绍python中正则表达式的基本用法,做一个初步的认识。
元字符:所谓元字符,指的是那些不仅仅可以表示字符本身含义、并且还可以表示其他特殊含义的字符。正则中的元字符主要有如下这些:
. ^ $ * + ? { } [ ] \ | ( )
要在正则中匹配元字符本身,需要使用转义符号,比如如果要匹配”+”符号,则在正则中要写成:”\+”.
(2) 元字符在”[]”中不起所用,比如:[a+]匹配:a或+
但注意:在方括号中要匹配转义符“\”本身,要用:”\\”;要匹配方括号开头的”^”符本身,要用:”\^”;要匹配”-“字符,需要用:”\-“
(3) 补集匹配:[^a],匹配非a的一个字符
(4) 匹配连续字符:[a-zA-Z0-9],匹配大小写英文字母和数字
一些特殊字符:
\d:匹配:[0-9]
\D:匹配:[^0-9]
\s:匹配:任何空白符,即:[\t\n\r\f\v]
\S:匹配:任何非空白符,即:[^\t\n\r\f\v]
\w:匹配:[a-zA-Z0-9_ ]
\W:匹配:[^a-zA-Z0-9_ ]
(2) 表示非贪婪匹配:
{0,}:0次或多次,相当于”*”
{1,}:1次或多次,相当于”+”
{0,1}:0次或1次,相当于”?”
{m,n}:m次到n次(m <= n)
1. 初识
python通过re内置模块来处理正则表达式(regex),底层使用C引擎。一个简单的正则匹配的例子:import re # 正则 p = re.compile(r'[a-zA-Z0-9]') s = 'hello 123, world!' print re.findall(p,s) # 输出: # ['h', 'e', 'l', 'l', 'o', '1', '2', '3', 'w', 'o', 'r', 'l', 'd']
元字符:所谓元字符,指的是那些不仅仅可以表示字符本身含义、并且还可以表示其他特殊含义的字符。正则中的元字符主要有如下这些:
. ^ $ * + ? { } [ ] \ | ( )
要在正则中匹配元字符本身,需要使用转义符号,比如如果要匹配”+”符号,则在正则中要写成:”\+”.
2. 正则元字符含义解释
1. [ ]
(1) 常用来指定一个字符集,如[abc]匹配:a或b或c(2) 元字符在”[]”中不起所用,比如:[a+]匹配:a或+
但注意:在方括号中要匹配转义符“\”本身,要用:”\\”;要匹配方括号开头的”^”符本身,要用:”\^”;要匹配”-“字符,需要用:”\-“
(3) 补集匹配:[^a],匹配非a的一个字符
(4) 匹配连续字符:[a-zA-Z0-9],匹配大小写英文字母和数字
2. ^
匹配行首,在MULTILINE模式中,直接匹配字符串中的每一个换行。3. $
匹配行尾,行尾是指:字符串尾,或一个换行字符后的任何位置。4. \
转义字符,如果要匹配”\”本身,需要使用再次转义:”\\”。一些特殊字符:
\d:匹配:[0-9]
\D:匹配:[^0-9]
\s:匹配:任何空白符,即:[\t\n\r\f\v]
\S:匹配:任何非空白符,即:[^\t\n\r\f\v]
\w:匹配:[a-zA-Z0-9_ ]
\W:匹配:[^a-zA-Z0-9_ ]
5. *
匹配前一个字符或子表达式出现0次或多次。6. +
匹配前一个字符或子表达式出现1次或多次。7. ?
(1) 匹配前一个字符或子表达式出现1次或0次。(2) 表示非贪婪匹配:
import re # 贪婪模式,会尽量多地去匹配 r1 = re.compile(r'ab+') s1 = 'abbb' print re.findall(r1,s1) # 非贪婪模式,会尽量少地去匹配 r2 = re.compile(r'ab+?') s2 = 'abbb' print re.findall(r2,s2) # 输出: ''' ['abbb'] ['ab'] '''
8. {}
匹配前一个字符或子表达式出现指定次数:{0,}:0次或多次,相当于”*”
{1,}:1次或多次,相当于”+”
{0,1}:0次或1次,相当于”?”
{m,n}:m次到n次(m <= n)
相关文章推荐
- python正则表达式系列(4)——分组和后向引用
- $python正则表达式系列(3)——正则内置属性
- python正则表达式系列(2)——re模块常用函数
- $python正则表达式系列(5)——零宽断言
- python正则表达式系列(5)——零宽断言
- python正则表达式系列(3)——正则内置属性
- 《Python 系列》- 正则表达式
- Learning python 系列5
- Learning python 系列10
- Learning python 系列6
- Foundations of Python Network Programming - 读书笔记系列(3) - Email Services
- (已加马赛克)10 行代码判定色*情*图片——Python 也可以系列之二
- Python socket udp网络编程系列一(客户端)
- IBM developerWorks的Python系列文章
- Learning python 系列7
- Learning python 系列12
- Foundations of Python Network Programming - 读书笔记系列(2) - Web Services
- python小例子系列启动之公示
- Python设计模式系列之一: 用模式改善软件设计
- Learning python 系列1