如何做
- 整合之前学习成果。包括 evernote、youdaonode 里面的东西。
- 探索 Linux 里面的正则表达式
- python 里面的正则表达式
- Java 里面的正则表达式
- 通用型的正则表达式
基础的部分
- 元字符,就是组成计算所有文本的基本元素,例如,字符、标点符号、文字,总之,就是我们能在键盘上敲出来的东西
- 重复,描述了让元字符重复多少次的语法
- 描述开头和结束的语法
- 描述范围的语法
- 或逻辑
- 分组
- 简写字符集
. 代表所有的字符
w(word) 代表所有的字母和数字,相当于 [a-zA-Z0-9_]
在下面的图中,我们看到键盘上的字母、数字和_都匹配上了。
W 和 w 正好相反,只要w匹配不到得,W都能匹配上
如下所示,空格和所有键盘上非字母的字符都匹配上了,不过还有一个漏网之鱼 _ ,这个哥们是在 w 里面的
d(digital) 匹配数字,类似 [0-9]
D(non-digital) 不是数字的那些字符,[^0-9]
如下图,只有数字没有匹配到
f匹配一个换页符
目前还没有找到这个字符如何
匹配一个符号,这个符号代表了一个新行的开始
如下图所示,有 7 行,
匹配到 6 个新行的开始
>
匹配一个回车字符
目前没有用到。
制表符
v 匹配一个垂直制表符
用的不多
p 匹配 CR/LF(等同于 ),用来匹配 DOS 行终止符
用的不多
Matches, without consuming any characters, immediately between a character matched by w and a character not matched by w (in either order). It cannot be used to separate non words from words.
只能和字符(w)组合使用,表示字符的后面是 W,如下图所示,第一个 t 没有匹配上,后面都匹配上了, 不会匹配任何字符,只是作为一个参照。
B, 匹配那些 匹配不到的 w
如下图所示,后面有空格的 a 没有匹配上。不匹配任何的字符,只是做为一个参照,在下面的图中只匹配到了 a
8. 转义,一般的情况,我们可以是 来将特殊的字符转成普通字符
如下图所示,(和)是分组含义,在正则表达的保留字符,在保留字符的前面加上就可以匹配了。
s匹配所有空格字符,等同于: [
f
p{Z}]
s 代表所有不可见字符。
S,就是 [^s]
进阶的部分
1.零宽断言
有的时候,我们之前匹配到的两种字符串之间的字符串,例如:
select * from table_name where field_name = "aaa" ;
想从上面这个字符串里面匹配到 table_name。
.*(?=swhere)
(?<=froms).*(?=swhere)
2.捕获和非捕获
3.反向引用
select regexp_replace("2020-01-01" , "(20)\1" , "\1")
4.贪婪和非贪婪
5.反义
select regexp_replace("18712344321" , "(?<=\d{3})\d{4}(?=\d{4})" , "****")select regexp_replace("2020-01-01" , "(20)\1" , "")select regexp_replace("2020-01-01 00:00:00" , "[-: ]" , "")select regexp_replace("2020-01-01 00:00:00" , "[-: ]" , "")select regexp_replace("2020-01-01 00:00:00" , "(?<=\d{4}-\d{2}-\d{2}).*" ,"")select regexp_replace("00:00" , "\d{2}:00" , "" ) select regexp_replace("hello world" , "(hello|world)" , "")select regexp_extract("hello world" , "(hello|world)")
End.爱数据网专栏作者:wang-possible作者介绍:6年零售大数据工作经验,技能持续精进本文为中国统计网原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0420)
- 我的微信公众号
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论