正则 的 分组语法(又叫 捕获 和 断言/零宽断言 )
分类代码/语法说明
(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