关于正则表达式,关于Python的re模块
来源:互联网 发布:c语言北京电脑学校 编辑:程序博客网 时间:2024/06/09 21:52
学了廖雪峰大大的Python 3教程有一段时间了,感觉Python的语法基本掌握了,但是有一个部分却总是学了又忘,那就是我今天要讲的部分——正则表达式。正则表达式并不是Python独有的语法,而是计算机科学领域里一种常见的工具,在很多编程语言里都有应用(比如说Java和JS),在编译原理领域也有重要的用途,掌握好正则表达式会给处理文本带来很多方便。以下内容是我根据廖雪峰大大的教程里关于正则表达式相关知识做的总结,由于教程里是把Python正则表达式的语法规则和Python的re模块混合在一起讲的,初学者在学习时很有可能会弄混。所以我的文章将这两部分分开,前一部分讲Python中的正则表达式语法规则,后一部分讲怎样运用Python中的re模块。
Python中正则表达式的语法规则:
- \d 匹配一个数字,
\w 匹配一个字母或数字(能否匹配汉字视操作系统和应用环境而定),
\s 匹配一个空白符,
. 匹配任意一个字符,
\b 匹配单词的开始或结束,
^ 匹配字符串的开始,
$ 匹配字符串的结束; - 如何匹配变长的字符:
用 * 表示任意个字符(包括0个),
用 + 表示表示至少一个字符,
用 ?表示0或1个字符,
用{n}表示n 个字符,
用{n,m}表示n~m个字符; - 实现更精确的匹配:可以用[]表示范围。
例如[0-9a-zA-Z]可以匹配一个数字或字母,等价于 \w ; - a|b 可以匹配 a 或 b ;
- py 可以匹配 "python" ;
- 用 () 来表示分组。
例如, ^(\d{3})-(\d{3,8})$ 可以匹配 “010-12345” ,其中 “010-12345” 是 group(0) , “010”是group(1) , “12345”是group(2) ; - 贪婪匹配:正则匹配默认是贪婪匹配,会尽可能多的匹配字符串。
例如, ^\d+0*$“ 可以匹配 "102300”,由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。如果想让 \d+ 采用非贪婪匹配(也就是尽可能少匹配),加个 ? 就可以让 \d+ 采用非贪婪匹配了,将原正则表达式改为 ^\d+?0*$, \d+? 匹配到的就是“1023”, 0* 匹配到的就是“00”了。
Python的re模块用法:
- match() 方法用于判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None
用法如下:
import re
test_string = "用户输入的字符串"
if re.match(r"正则表达式",test_string):
print ("ok")
else:
print("failed") - split()方法比字符串的 split() 方法更加灵活
例如,请看正常的切分代码:
>>> 'a b c'.split(' ')
['a', 'b', '', '', 'c']
嗯,无法识别连续的空格。
用正则表达式试试:
>>> re.split(r'\s+', 'a b c')
['a', 'b', 'c']
无论多少个空格都可以正常分割。 - 如果正则表达式中定义了组,就可以在 Match 对象上用 group() 方法提取出子串来。
注意到 group(0) 永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。
例如,
>>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
>>> m
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
>>> m.group(0)
'010-12345'
>>> m.group(1)
'010'
>>> m.group(2)
'12345'
也可以用 groups() 方法显示所有分组
>>>m.groups()
( '010' , '12345' ) - 如果一个正则表达式要多次使用,每次都要编写一遍就会很麻烦,可以使用compile()方法进行预编译再使用。
例如,
>>> import re
# 编译:
>>> re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
# 使用:
>>>re_telephone.match('010-12345').groups()
('010', '12345')
>>>re_telephone.match('010-8086').groups()
('010', '8086')
阅读全文
1 0
- 关于正则表达式,关于Python的re模块
- python正则表达式(关于re)
- Python 正则表达式 RE模块的使用方法
- Python的re模块学习---正则表达式
- 正则表达式和python的re模块
- re---Python的正则表达式模块
- Python 正则表达式 RE模块的使用方法
- Python re模块的正则表达式
- Python正则表达式re模块的使用方法
- PYTHON RE模块 正则表达式的使用
- python正则表达式:re模块
- Python 正则表达式 re模块
- Python 正则表达式,re模块
- Python re模块正则表达式
- Python正则表达式re模块
- Python正则表达式,re模块
- python 正则表达式 re模块
- Python 正则表达式 re模块
- PAT basic 1025.1
- MySQL数据库JDBC连接基本步骤
- CODEVS 2702 分配房间
- Android——文本控件——EditText(文本框)
- PAT basic 1025.2
- 关于正则表达式,关于Python的re模块
- 面试题求一个整数中二进制1的个数
- AutoCAD文档02——常用快捷键
- Android Material Design 之 CoordinatorLayout + CollapsingToolbarLayout
- java面试题,各大企业常见的java笔试题及答案(精华)
- 3种提高效率的排序
- PAT basic 1026
- 8.6晚做题感悟
- PAT basic 1027