在某些情况下有可能看的在正则表达式中有g、s和m等标记,也有可能是其三者的结合,例如gs、gm、gsm等,这些标记是什么含义呢?其实他们分别对应如下的含义:g为全局模式;s为单行模式;m为多行模式。下面就来举例说明
1. 全局模式
期望对要匹配的字符串匹配多次
1.1 下图中虽然使用了全局模式g,但是没有匹配出任何的字符,这是因为这个正则匹配工具https://regexr.com在默认的情况是单行匹配(将要匹配的字符串看成成一行,即使要匹配的字符串存在于多行上)
1.2 加上多行匹配模式后,效果如下。可以看到命中了两行。这里 “THE RIME OF THE ANCYENT MARINERE, IN SEVEN PARTS.”是要匹配的字符串,但是这里使用了全局模式g,因此会对要匹配的字符串进行多次匹配
1.3 去掉全局匹配模式g后,可以看到对要匹配的字符串”THE RIME OF THE ANCYENT MARINERE, IN SEVEN PARTS.”只匹配了一行
2. 单行模式
将要匹配的字符串看成是一个字符串,即使要匹配的字符串存在于多行上
2.1 例如:^/THE匹配下面整段字符串的开始,\?$匹配整段字符串的结尾
2.2 此时及时加上了全局匹配模式g,效果也是一样的,因为符合要求的字符串只有一处
3. 多行模式
要匹配的字符若含有多行的话,单独对每一行进行正则匹配