一文教你学会正则表达式

正则表达式

匹配非打印字符(assii码前27个 除了0

\cx: 例: \ci 匹配ctrl+i(windows系统下面 ) 匹配类似\t的字符 就是匹配ascii码的第十个字符,和字母表顺序错开一个,因为零不匹配,这个x可以是a-z,A-Z,别的字符跟在\c后面将当做匹配‘c’字符 例如:\c1

\f: 匹配一个换页符号 [\cL]也可以匹配,作用:让打印机打印下一张纸

\n: 匹配一个换行符。[\cJ]

\r: 匹配一个回车符。[\cM]

\s: 匹配任意空白字符,不能显示上屏幕上的,上面的他都可以匹配到

\S: 匹配任何非空白的字符,和上面的相反,能显示在屏幕上的

\t: 匹配一个制表符号。 键盘上的tab键

\v: 匹配一个垂直制表符。它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。

\w: 类似[0-9a-zA-Z_]。表示数字、大小写字母和下划线。

\W: [^0-9a-zA-Z_]。非单词字符。和上面匹配的内容相反。

\d: [0-9]。表示是一位数字。

\D: [^0-9]。表示除数字外的任意字符。

上面的\n \r \s \S \t \w \W \d \D都是常用的,剩下的都是基本上不会用到的

特殊匹配字符

如果要匹配以下的特殊字符,必须先让字符转义即'\x',

$: 匹配以前面结尾的字符。 例如:ddsdsfsfa a$ 只会匹配a这个字符,如果ddddsdsffb 匹配这个字符串,则没有匹配

(): 标记一个表达式的开始和结束的位置

*: 匹配前面的表达式零次或者多次

+: 匹配前面的表达式一次或者多次

.: 匹配除换行符\n之外的任何单字符

[]: 匹配中括号表达式里面的东西,一般和^一起用

?: 匹配前面的表达式零次或者一次

: 将下一个字符转义

^: 匹配字符串开始的位置

{: 区配限定字符

() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。一个()代表一个组 ([a-z][0-9])这个正则你必须得先匹配到前面是a-z里面的东西,后面跟的还得是0-9里面的东西,才会匹配到值 例如:aadccc23这个字符串就可以匹配到c2,aadccc@23这个字符串,([a-z][0-9])通过这个正则就匹配不到值 。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\t]表示tab。 {}一般用来表示匹配的长度,比如 \t{3} 表示匹配三个tab,\t[1,3]表示匹配一到三个tab。

|: 指明两项之间的一个选择。(小括号‘()’会改变他的作用范围) 例:wl:625363199@qq.com

wl|yjm|khl:.* 和 (wl|yjm|khl):.*

后者会匹配完整的wl:625363199@qq.com 前者则只会匹配wl ,因为后者的小括号改变了|作用范围,(wl|yjm|khl)使用范围变成了(wlyjmkhl),和:.*后面的字符不在一个段,所以可以匹配整个字符,前者的范围在wl|yjm|khl:.* 上面,可以这样理解wl为一组yjm 为一组 khl:.*为一组,所以匹配到wl就匹配完了如果将正则改为yjm|khl|wl:.* 就可以 匹配完整的字符串

贪婪匹配模式和非贪婪匹配模式(懒惰匹配)

贪婪模式的匹配正则:

“{m,n}”有n个最多匹配n个 例如:d{1,3} ddd 匹配到的值就是ddd

"{m,}"有多少个就匹配多少个 例如:d{1,} ddddd匹配到的值就是ddddd

"?"有一个就匹配一个 例如:d? ddd匹配到的值就是d d d

"*"有多少个就匹配多少个 例如:"d星号(typora的bug)" ddd匹配到的值就是d d d

"+"有多少个就匹配多少个 例如:d+ ddd匹配到的值就是d d d

非贪婪模式正则:

"{m,n}?"按m匹配 例如:d{1,3}? ddd 匹配到的值就是d d d 一个一个值返回

"{m,}?"按m个数匹配 例如:d{1,}? ddd 匹配到的值就是d d d一个一个值返回

"??"匹配零个 例如:d?? ddd 匹配到的值就是没有 匹配

"*?"匹配零个 例如:d星号? ddd 匹配到的值就是没有匹配

"+?"匹配一个 例如:d+? ddd 匹配到的值就是 d d d一个一个值返回

限定符

*:匹配零次或者多次

+:匹配一次或多次

?:匹配零次或一次

{n}:n不能为负数,至少匹配n次

{n,}:至少匹配n+次,

{n,m}:至少匹配n次最多匹配m次。n<=m

定位符

^: 匹配字符串开始的位置,和中括号结合使用体验最佳

$: 匹配以前面结尾的字符。 例如:ddsdsfsfa a$ 只会匹配a这个字符,如果ddddsdsffb 匹配这个字符串,则没有匹配

\b: 匹配一个单词边界,即字与空格间的位置,例如:?abc \ba 能匹配到a,\bb就不能配置到b了,因为b前面没有没有边界字符,?a中bc 这样\bb 就能匹配到b了因为b和前面的‘中‘这个字符产生了边界,所以就可以匹配了,一般符号和中文之间,符号和英文之间,中文和英文之间会产生边界。

\B: 匹配一个非单词边界,和上面匹配的相反,一般符号和符号之间,英文和英文之间,中文和中文之间没有边界。

^:不放在中括号里面匹配的是一行开头的部分,例如:daf ^d 这个是可以匹配到d的 ^da 也是可以匹配到da的,它们都跟在开头的后面是连续的,^a是在daf这个字符串中是匹配不到a的,adf 这个字符串就可以被^a匹配到 ,a字符是adf字符串中开头的第一个字符所以可以被匹配到,^d 匹配adf这个字符串,匹配不到d,因为d不是开头的第一个字符。^ad 匹配adf这个字符串可以匹配到ad,因为ad是开头前两个字符,是连续的所以可以匹配。

^:放在中括号里面[^daf] 匹配以d开头的字符或者以a或者以f开头的字符,简单的说就是不匹配daf 可以理解为取反的意思。例如:dafbbdcfgh 这个[^daf] 就会匹配 b b c g h 这几个字符 。[^wl]匹配”wl是w测l试呀wl字符串“这个字符串的结果是,是、测、试、呀、字、符、串。除了wl这两个字符别的字符都匹配。

捕获

?=: 前瞻,匹配表达式前面的表达式的内容。例如:a(?=b) 匹配ab这个字符串就会匹配到a这个字符,匹配ba这个字符串就匹配不到值 。

?<=:后顾,匹配表达式后面的表达式的内容。例如:(?&lt;=b)a 匹配ba这个字符串就会匹配到a这个字符,匹配ab这个字符串就匹配不到值 。

exp1(?!exp2):负前瞻,匹配后面不是exp2的exp1 例如:a(?!b)匹配ba这个字符串会匹配到值,但是匹配bab,就匹配不到值 。因为a的后面出现b这个字符了。

(?

?: 非捕获分组,(?:a)匹配ab这个字符串的时候虽然会匹配到,但是不会把值存起来,增加正则的匹配速度。而(a)匹配ab这个字符串的时候匹配到的同时,也会将值存起来,后面可以提取出来。

以上就是正则的基础教程了,正则就是多用就熟悉了。

欢迎大家关注我的公众号呀:千珏,后台发送:书籍 领百本后端书籍,祝你早日登顶架构师呀。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容