处理字符串的方法
[^0-9]取不是0-9.取反。
非贪婪模式,往少了干。
\num \1拿第一个分组匹配的结果
\num \2拿第二个分组匹配的结果
×\1-----> *\1 转义,把、转义成\
match
# encoding: utf-8#match从起始位置查,#符合规则就返回结果,# 如果不符合,返回none,# 并且是只匹配一次。只匹配开头第一次import re base_str='HAhaha1234567'#pattern :是你构建正则表达式对象,可以是个string(比如J)#strin 要匹配的string#因为stringj-z没有h#【j-z】是匹配的位数,【j-z】【j-z】匹配二次ret = re.match('[J-Z]',base_str)print(type(ret))print(ret)#<type '_sre.SRE_Match'> 有一个group()#不加判断,如果不符合正则,就会group报错if ret: #返回的是match类型,就可以用 group 打印出结果 print(ret.group())else: print('not')
encoding: utf-8
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_
\W 匹配非单词字符
都是只匹配一个字符
import re#sub_str='a'sub_str='1'ret=re.match('.',sub_str) print(ret.group()) sub_str='a'sub_str='9'ret = re.match('[a]',sub_str) ret = re.match('[a-zA-Z0-9]',sub_str) print(ret.group())#匹配单个数字sub_str='00'ret = re.match('\d',sub_str) print(ret.group())
encoding: utf-8
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次
import re
sub_str = 'bcd12345'
sub_str = 'bbbcd12345'
ret = re.match('b.*',sub_str)
b开头.任意的 出现多次
不加?都是贪婪
print(ret.group())
加?号 表示:非贪婪匹配 对于* 出现最少次数 0次
ret = re.match('b.*?',sub_str)
print(ret.group())
ret = re.match('b*?',sub_str)
print(ret.group())
b
b(3,8)前面字符串没有bbb就会返回none 但是有bbb就返回bbb
ret = re.match('b.{3,8}',sub_str)
print(ret.group())
match
search:从头开始匹配,单次匹配,会在整个字符串中找目标,
一旦匹配立即返回,如果整个字符串都没有,返回NONE
findall 找所有 list
会根据你写的表达式,在字符穿中匹配, 会返回查到的所有。 返回的是一个列表。
sub 替换
先根据正则表达式查找要匹配的字符串,然后使用一个新的字符串,去替换
select * from studentinfo where student_name like '王';
split
会根据正则表达式里面的符号,做字符串的分割。返回的是一个列表。
finditer
跟findall很像,不过返回的结果是一个可迭代对象。
设为一个对象
compile
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:
import re 将正则表达式编译成 Pattern 对象
pattern = re.compile(r'\d+')
修饰符号
描述
re.I 使用匹配对大小写不敏感(不区分大小写)
re.S 使.匹配包括换行符在内的所有字符
re.M 多行匹配
re.L 做本地化识别
select * from studentinfo where student_name regexp '.牛.*$';
*0-duo
phone
'^1[7,8][0-9]+'
(7|8|9)
\
^ 匹配字符串开头
$ 匹配字符串结尾
encoding: utf-8
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
作者:congchao
链接:https://www.jianshu.com/p/999f02eca982