正则表达式中的分隔符有什么作用?
正则表达式中分隔符的作用
核心作用:划分规则主体与修饰符
在多数正则流派里,分隔符最核心的用途是把正则的匹配规则主体和**修饰符(flags)**明确区分开。比如PCRE语法中:
/abc/i
这里的/就是分隔符,abc是你要匹配的规则,i是「忽略大小写」的修饰符。没有分隔符的话,解释器根本没法分清哪部分是规则、哪部分是修饰符。
减少转义,让正则更简洁
当你的正则规则里刚好包含了默认分隔符时,换用其他分隔符可以省去反复转义的麻烦。比如要匹配URL里的https://:
- 用
/做分隔符,必须把规则里的/转义成\/:/https:\/\/example\.com/ - 换成
~做分隔符,直接写就行,不用转义:~https://example\.com~
Regex101里给不同流派列出多种分隔符,就是给你提供这类替代选项——只要选一个不在你的正则规则里出现的字符就行。
不同流派的分隔符差异
PCRE流派(PHP、Perl等)
/、~、@、;、%这些都是单字符分隔符,用法完全一致,只是字符不同。你甚至可以用成对的括号当分隔符(比如(abc)i),不过这种写法比较少见。
.NET流派
.NET里的分隔符本质是字符串的包裹符,因为.NET中正则通常写在字符串字面量里:
- 用单个
"包裹时,正则里的双引号要写成""来转义,比如"He said ""hello"""; - 用
""""包裹是针对多行正则的场景,能避免每行都处理双引号转义,比如:""" Match "quotes" here without escaping each one """
别和“正则分割字符串”搞混
你搜索到的“用正则分隔字符串”是指把正则匹配的内容当成分割标记,拆分目标字符串(比如JS里的"a,b,c".split(/,/)),这和正则自身的分隔符完全是两码事——前者是正则的一种应用场景,后者是正则语法的组成部分。
内容的提问来源于stack exchange,提问作者Ralf_Reddings
相关产品推荐
相关产品推荐

