正则 的 分组语法(又叫 捕获 和 断言/零宽断言 )

作者:超级管理员 时间:2023-04-30 浏览:509 点赞:66
509

分类代码/语法说明

(xxx)(默认的)匹配xxx,并捕获文本到自动命名的组里(默认$1 $2 $3 ...)

(?<name>xxx)匹配xxx,并捕获文本到名称为name的组里,也可以写成(?'name'xxx)

//  (类似自定义$xx变量名)   !注意调用时不是前缀$ , 而是前缀 k  .   如使用 k<Word>

(?:xxx)        匹配xxx,不捕获匹配的文本,也不给此分组分配组号(不暂存到$1 $2 $3 ...)


(?=xxx)        匹配xxx前面的位置    

//默认的匹配在 "替换" 时 包括了前面  和后面的部分 #这两写法等同 "替换后的字符串" 少写一点

(?<=xxx)    匹配xxx后面的位置

//如w+(?=ing),匹配以ing结尾的单词的前面部分(除了ing以外的部分),

如查找I'm singing while you're dancing.时,它会匹配sing和danc


(?!xxx)        匹配后面跟的不是xxx的位置

(?<!xxx)    匹配前面不是xxx的位置

注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

(?m) ^ 与 $ 匹配数据内的换行符.   




(?i) 不区分大小写. 该标志对组无效. 它指定正则表达式匹配时不涉及大小写.   

(?-i) (默认) 区分大小写. 该标志对分组无效. 它指定正则表达式匹配时区分大小写.   

(?i ... ) 不区分大小写的组. 仅工作于正常组, 在分组内执行匹配时区分大小写.   


(?s)<ol>(.*)ol>          使 . 匹配"换行符" (默认 "." 不匹配换行)   

// !注意:    像^号之类的 依然只对本行有效(即^号里根本不支持S[非非换行,即需要匹配换行符] )!

旧的兼容写法: 使用([sS]*)或([dD]+)或([wW]*) 代表匹配一切   <ol>[sS]*ol>


(?x) 忽略空白区域和 # 注释.   

(?U) 反转贪婪的量词.   


| 或句点" . " , 可以匹配|前的字符也可以匹配|之后的字符.   

退出一个特殊字符 (让它匹配实际字符) 或者引用一个特殊字符类型 (见下文)..   

\ 匹配一个真实的反斜线 ().   


—————————懒惰限定符   

!!!  ?号(和?!放置位置类似)必须放到 同级 才有效,放 括号里面 无效!

Yesterday is 【<b>history</b>,tomorrow is a <B>mystery</B>, but today is a <b>gift</b>】.

<[Bb]>.*?</[Bb]>   //有效     <[Bb]>(.*)?</[Bb]>  //无效!


代码/语法 说明

*? 重复任意次,但尽可能少重复

+? 重复1次或更多次,但尽可能少重复

?? 重复0次或1次,但尽可能少重复

{n,m}? 重复n到m次,但尽可能少重复

{n,}? 重复n次以上,但尽可能少重复


文章标题:正则 的 分组语法(又叫 捕获 和 断言/零宽断言 )
pboot建站网 (hhsy.cc) 所发布的内容,部分为原创文章,
转载请注明来源,网络转载文章如有侵权请联系我们!
本文最后更新发布于2023-04-30
某些文章具有时效性,若有错误或已失效,请留言或联系客服:hsy_99999999@163.com

相关阅读