正则表达式-修饰符

阅读量: zyh 2022-04-24 13:07:44
Categories: > Tags:

基本

?修饰符1修饰符2 启用修饰符功能

?-修饰符1修饰符2 关闭修饰符功能

(?i) 表示所在位置右侧的表达式开启忽略大小写模式

(?s) 表示所在位置右侧的表达式开启单行模式。
更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
注意:(?s)通常在匹配有换行的文本时使用

(?m) 表示所在位置右侧的表示式开启指定多行模式。

(?i)

以 nginx 为例,这里的 (?i) 表示忽略 /aoo/(.*) 里的大小写,也就是说 /Aoo/(.*) 也可以匹配

rewrite "(?i)/aoo/(.*)" /$1 break;

(?m)

如果一个字符串中包含\n这种换行符,若正则前缀如果不加(?m),则正则匹配的时候会认为是一行。

例如,以 js 为例

不加 m 则无法匹配到,因为 This is an\n antzone good 被当作一行

var str="This is an\n antzone good"; 
var reg=/an$/;
console.log(str.match(reg));
# 输出
null

加了 m 则可以匹配到,因为 This is an 被当作一行

var str="This is an\n antzone good"; 
var reg=/an$/m;
console.log(str.match(reg));
# 输出
[
    "an"
]

多次调用

(?i)a((?-i)a)可以匹配Aa和aa,不能匹配AA和aA