手记

正则基本操作

在Python中要使用正则首先要导入模块

#pattern:是你构建的正则表达式对象,可以是个字符串

在re中有几个方法:

1.match 从头开始匹配,只匹配一次,3.匹配到结果后立即返回,并且可以使用group方法获取匹配结果,如果没有匹配到结果返回None

2.search:从头开始匹配,单次匹配,会在整个字符串中找目标,一旦匹配到立即返回,如果整个字符串中都没有,返回None

3.findall:会根据你写的正则表达式,在字符串中匹配结果,会返回所有查找到的结果,返回的结果是一个列表。

4.sub:先根据正则表达式查找到要匹配的字符串,然后使用一个新的字符串,去替换查找到的字符串。

5.split:会根据你正则表达式里面的符号做字符串的分割,返回的是一个列表

6.finditer:跟findall很像,不过返回的结果是一个可迭代对象。

匹配单个字符

.匹配任意1个字符(除了\n)

[ ]匹配[ ]中列举的字符

\d匹配数字,即0-9

\D匹配非数字,即不是数字

\s匹配空白,即 空格,tab键

\S匹配非空白

\w匹配单词字符,即a-z、A-Z、0-9、_

\W匹配非单词字符

匹配多个字符

*匹配前一个字符出现0次或者无限次,即可有可无

+匹配前一个字符出现1次或者无限次,即至少有1次

?匹配前一个字符出现1次或者0次,即要么有1次,要么没有

{m}匹配前一个字符出现m次

{m,n}匹配前一个字符出现从m到n次

匹配开头结尾

^ \A 匹配字符串开头

$ \Z 匹配字符串结尾

分组匹配方式

|匹配左右任意一个表达式

(ab)将括号中字符作为一个分组

\num引用分组num匹配到的字符串

(?P)分组起别名

(?P=name)引用别名为name分组匹配到的

贪婪和非贪婪

Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

非贪婪则相反,总是尝试匹配尽可能少的字符。

在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。

*? 重复任意次,但尽可能少重复

+? 重复1次或更多次,但尽可能少重复

?? 重复0次或1次,但尽可能少重复

complie函数

import re 将正则表达式编译成 Pattern 对象 pattern = re.compile(r'\d+')

修饰符号 描述 re.I 使用匹配对大小写不敏感(不区分大小写) re.S 使.匹配包括换行符在内的所有字符 re.M 多行匹配 re.L 做本地化识别

match 方法:从起始位置开始查找,一次匹配

search 方法:从任何位置开始查找,一次匹配

findall 方法:全部匹配,返回列表

finditer 方法:全部匹配,返回迭代器

split 方法:分割字符串,返回列表

sub 方法:替换

mysql正则查询

可以用select语句来查询,使用Like  和 regexp 关键字 

LIKE匹配整个列。

而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。

.匹配任意1个字符(除了\n)

[ ]匹配[ ]中列举的字符

\d匹配数字,即0-9

\D匹配非数字,即不是数字

\s匹配空白,即 空格,tab键

\S匹配非空白\w匹配单词字符,即a-z、A-Z、0-9、_

\W匹配非单词字符

*匹配前一个字符出现0次或者无限次,即可有可无

+匹配前一个字符出现1次或者无限次,即至少有1次

?匹配前一个字符出现1次或者0次,即要么有1次,要么没有

{m}匹配前一个字符出现m次

{m,n}匹配前一个字符出现从m到n次

^匹配字符串开头$匹配字符串结尾

|匹配左右任意一个表达式

(ab)将括号中字符作为一个分组

\num引用分组num匹配到的字符串

(?P<name>) 分组起别名

(?P=name) 引用别名为name分组匹配到的字符串



作者:糖炒栗子_01c5
链接:https://www.jianshu.com/p/db9ab13918a2


0人推荐
随时随地看视频
慕课网APP