摘要
本文主要讲了正则的四种匹配模式(mode而非pattern)。
目录
匹配模式
什么是匹配模式
匹配模式是指正则中改变元字符匹配行为的方式,比如匹配时不区分大小写。
常见的匹配模式:
- 不区分大小写模式
- 点号通配模式(单行模式)
- 多行模式
- 注释模式
不区分大小写模式
首先如何来对各种模式进行表示呢?
通过模式修饰符即(?模式标识)
来进行修饰,当我们将模式修饰符放在正则前面就可以对整个正则表达式进行修饰了。
不区分大小写模式的模式修饰符是(?i)
.例如可以用(?i)today
来匹配toDay
和TODAY
(注:我在vscode中试了下,发现并不能成功匹配,查了下原因,应该是vscode的正则表达式的规则和正常的语法规则不太一样)
注意:(?i)(today) \1
不仅可以匹配today today
也可以匹配today TODAY
,因为(?i)
修饰的是这整个正则。
但是((?i)totay) \1
只能匹配today today
,因为(?i)
修饰的是第一个分组。
点号通配模式
.
号可以匹配任意符号但是不能匹配换行,若想要匹配任何字符,可以使用点号通配模式。
点号通配模式也被称为单行匹配模式,其模式修饰符为(?s)
。
多行匹配模式
Tips:非多行模式下,^
匹配字符串开头,$
匹配字符串结尾,例如:^the|sunday$
只会匹配到the sunday today is the sunday
这个字符串中开头的the
和结尾的sunday
。
多行匹配模式可以改变^
和$
符号的规则,使得^
和$
符号可以匹配上每行的开头或结尾,其模式修饰符为(?m)
。
注释模式
注释模式就和代码中的注释一样,用来对正则表达式进行注释。其模式修饰符为(?#注释内容)
。
例如:(\w+) \1(?#单词连续出现一次)
,这样就可以很清晰的让人理解这个正则表达式是表示连续出现一次的单词。
版权声明
本文原创作者:ereson
博客地址 :https://ereson.github.io/