为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 正则表达式

正则表达式

2018.11.03 19:03 1563浏览

处理字符串的方法

[^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


点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
338
获赞与收藏
1298

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

145篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消