正则表达式基础——笔记

.   匹配任意单个字符

\   用来反转  

for  texta.out    我想匹配'a.',那么就可以用\.

如果想匹配'\',就可以用\\

[] 用来取字符组,自匹配中括号里的单个字符

For:   text hear near  想要同时匹配这两个单词,可以用[hn]ear

[hn]的意思是取h或者n

还可以是如下模式[a-z][0-9],他们的意思是可以去az的任意一个字符,0-9的任意一个字符。还可以将上面的操作取反[^a-z][^0-9],他们意思是取非az,非0-9

\r回车  \n换行  \ttab    \p换页  \v垂直tab

\d 所有数字等价于[0-9]   

\D  所有非数字 等价于[^0-9]

\w 所有单个大小写字母、数字、下划线,与 [a-zA-Z0-9_] 相同

\W 所有单个非大小写字母、非数字、非下划线,与[^a-zA-Z0-9_] 相同

\s  所有单个空字符,与[\f\n\r\t\v] 相同

\S 所有单个非空字符,与[^\f\n\r\t\v] 相同

[^x]表示反义,除X外的所有字符;[^abc],除abc之外的所有任意一个字符

+  用来匹配一个或多个相同与前面一个的操作

for  text    123a  346g    想匹配数字小于4且后面有带有英文字母的 [0-3]+[a-zA-Z]123a被匹配,346g没有

匹配0个或1个字符   

for:  flowers?  这个可以匹配flower或者flowers,但是不能匹配flowerss之类的

{} 出现次数

For:  \d{3}  匹配连着出现三个数字   \d{1,3}连着出现1-3个数字

惰性匹配于贪婪匹配的区别:惰性匹配是匹配完一个之后,就把信息保存起来,开始寻找下一次匹配;而贪婪匹配是不会保存起来的,等于说还没跳出这次匹配,直到匹配完全或者不符合条件的情况出现。

For: textJimmy is a <b>junior</b>developer <b>living</b> in <b>xi'an</c>.

贪婪匹配:<b>.*</b>

匹配结果:<b>junior</b>developer <b>living</b>

惰性匹配:<b>.*?</b>

匹配结果:<b>junior</b>    <b>living</b>

           惰性匹配比贪婪匹配多一个问号,意思是匹配0个或一个,当有一个匹配的时候就会将信息保存起来,进入下一次匹配。

forflowers?? 它只会匹配flower,当它匹配完flower的时候,发觉匹配条件已经成立,s开始就是下一次匹配了

\b 单词边界符  通常情况下,以 空格、段落首行、段落末尾、逗号、句号等符号作为边界,值得注意的是,分隔符“-”也可以作为边界。

\B 非单词边界

文本开头  $文本结尾

() 子模式,在括号内的字符集合可以看成是一个元素,可以用于上面那些针对单字符的操作。

|  

\数字  表示向后引用,数字表示这里引用的是前面的第几个子模式

For:(of) \1  匹配 of of。意思就是of紧跟着一个of

$数字  用于替换子模式。数字表示这里替换的是前面的第几个子模式

for<h1>(.*?)</h1>      下文就就可以用$1来表示'.*?',即<h1></h1>之间的文本

?=  正向预查  这东西放在子模式里面的,其意义是先匹配完,再取子模式左边(前面)的内容,子模式去掉

For windowxp  window 95  匹配命令  window (?=[a-z]+\b) 先匹配得到window xp其中xp为子模式内容,然后取子模式左边的内容剩余window。所以最后的匹配内容为window

?<= 反向预查 与正向预查相反,它取子模式右边(后面)的内容

For:    <h2>This is header,too.</h2>

regex:   (?<=<h(?<number>[1-6])>).*?(?=</h\k<number>>)

Result:This is header,too.

用正向预查,取左边内容,用反向预查取右边内容,意思就是对子模式的内容取反,再去匹配。所以取得是他们中间的内容。

?!   负正向预查 它与正向预查相反。其实只是对子模式内的内容取反,取值方向还是一样的。

For windowxp  123 window 95匹配命令 window (?![a-z]+\b) 那么它最终匹配的是window 95的那个window而非xp的那个 

?<! 负反向预查  同理它与反向预查相反。相反的也只是子模式里的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值