一.正则表达式
正则表达式:由一系列特殊字符拼接而成的表达式/规则,该表达式用于从一个大字符串中匹配出符合规则的子字符串
1.常用匹配模式
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符等价于\t\n\r
\S 匹配任意非空字符
\d 匹配任意数字,等价于[0-9]
\D 匹配任意非数字
\A 字符串开始
\Z 字符串结束,如果存在换行,只能匹配到换行前的结束字符串
\z 字符串结束
\G 匹配到最后完成的位置
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串开头
$ 匹配字符串的末尾
. 匹配非换行(\n)的任意字符,当re.DOTALL标记被指定时,则可以匹配全部字符
[...]用来表示一组字符,单独列出:[amk]匹配'a','m'或'k'
[^...]排除字符..
2.数量符号
[] 只代表一个字符,从[]内任意取出,^在[]内是排除的意思
* 匹配0个或多个表达式
+ 匹配1个或多个表达式
? 匹配 0个或1个表达式
{n} 精确匹配n个表达式
{n,m} 匹配n到m次表达式,贪婪模式
a|b 匹配 a 或 b
() 匹配括号内的表达式,也表示一个组
3.方法:
3.1 findall
re.findall(pattern,str,flags) 查找所有符合条件的结果,返回列表,查不到返回空列表
3.2 search
re.search(pattern,str,flags) 只要查找到第一个符合条件的结果就会结束查询,返回包含匹配结果的对象,该对象可以用group()方法得到匹配的字符串,如果没有字符串匹配的,则返回None
3.3 match
re.match(pattern,str,flags),用法与search一致,但是是从头开始匹配
3.4 split
re.split(pattern, string, maxsplit=0, flags=0) 切割字符串返回列表,如 re.split('[ab]','sdvadgbfsvd')表示字符串遇到a或b都会切分,返回列表
3.5 sub
re.sub('a','A',str) 替换
3.6 compile
re.compile(pattern, flags=0) 记录正则表达式
a = re.compile(\d+)
a.findall(str)
4.特殊用法
4.1 .* 匹配所有
4.2 ?: 取消分组,()内输入,可使返回结果为全部的匹配内容
4.3 | 或者,先匹配前面的,后匹配后面的,所以将复杂的写在前面
4.4 \ 转义,对正则来说,a\\c确实能匹配到a\c,但是在python解释器读取a\\c时,会发生转义,然后交给re执行,故会报错,解决方法:a\\\\c或者r'a\\c'
4.5 .*? 通用取值
4.6 ?! ?!pattern,表示在没有配到pattern的字符串的前提下,再进行后续的正则表达式匹配,后续匹配仍然从被匹配字符串的头开始(排除)
如果?!后的正则表达式能匹配到,则直接返回None
4.7 ?= ?=pattern,表示在配到pattern的字符串的前提下,再进行后续的正则表达式匹配,后续匹配仍然从被匹配字符串的头开始(必须满足)
如果?=后的正则表达式不能匹配到,则直接返回None
4.8 查找汉字 re.findall(r'[\u4E00-\u9fa5]+','.....')
二.面向对象编程
核心是对象二字,对象是用来盛放数据和功能的容器
基于该思想编程就是在整合程序
优点:可扩展性强
缺点:编程复杂度高
与面向过程编程相比
面向过程:核心在于过程,此思想编程相当于在做一条条流水线
优点:把复杂的问题结构化继而简单化
缺点:可扩展性差
正则表达式 面向对象编程
最新推荐文章于 2023-07-21 11:52:57 发布