正则表达式四

不区分大小写模式(Case-Insensitive)

不区分大小写是匹配模式的一种。当我们把模式修饰符放在整个正则前面时,就表示整个正则表达式都是不区分大小写的。模式修饰符是通过 (? 模式标识) 的方式来表示的。

在不区分大小写模式中,由于不分大小写的英文是 Case-Insensitive,那么对应的模式标识就是 I 的小写字母 i,所以不区分大小写的 cat 就可以写成 (?i)cat。

 

 

 

到这里我简单总结一下不区分大小写模式的要点:

不区分大小写模式的指定方式,使用模式修饰符 (?i);

修饰符如果在括号内,作用范围是这个括号内的正则,而不是整个正则;

使用编程语言时可以使用预定义好的常量来指定匹配模式。

点号通配模式(Dot All)

单行的英文表示是 Single Line,单行模式对应的修饰符是 (?s)

多行匹配模式(Multiline)

^匹配整个字符串的开头,$ 匹配整个字符串的结尾。多行匹配模式改变的就是 ^ 和 $ 的匹配行为。

 

 

 

 

 

多行模式的作用在于,使 ^ 和 $ 能匹配上每行的开头或结尾,我们可以使用模式修饰符号 (?m) 来指定这个模式。

 

 


 

注释模式(Comment)

正则中注释模式是使用 (?#comment) 来表示。

 


 

 

不区分大小写模式,它可以让整个正则或正则中某一部分进行不区分大小写的匹配。

点号通配模式也叫单行匹配,改变的是点号的匹配行为,让其可以匹配任何字符,包括换行。

多行匹配说的是 ^ 和 $ 的匹配行为,让其可以匹配上每行的开头或结尾。

注释模式则可以在正则中添加注释,让正则变得更容易阅读和维护。

 

 

 

们来做一个小练习吧。HTML 标签是不区分大小写的,比如我们要提取网页中的 head 标签中的内容,用正则如何实现呢?

 

 

(?si)<head(\s(profile|accesskey|class|contenteditable|contextmenu|data-[\w\d]|dir|draggable|dropzone|hidden|id|lang|spellcheck|style|tabindex|title|translate)(=".*?")?)*>.*<\/head>

(?si)<head(.*?)>.*<\/head>

posted @ 2023-02-04 16:20  xueer1234  阅读(40)  评论(0编辑  收藏  举报