为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式

标签:
Java

处理字符串的方法

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


点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消