难道是因为跟perl学的?可是perl是内嵌正则表达式的语言,用分隔符标明正则很自然。php既然是用preg系列函数处理,为什么还要用分隔符?
python下也是用函数处理(re模块提供),不需要分隔符。
pattern = re.compile(foo)
haskell 下的 text.regex.posix 一样不需要分隔符。
my left foot =~ foo :: bool
有意思的是,php 5.3 开始废弃的 ereg系列函数是不加分隔符的:
eregi((ozilla.[23]|msie.3), $_server[http_user_agent]);
那么 preg 系列函数设计成 pattern 需要加分隔符,有何用意?
回复内容: 难道是因为跟perl学的?可是perl是内嵌正则表达式的语言,用分隔符标明正则很自然。php既然是用preg系列函数处理,为什么还要用分隔符?
python下也是用函数处理(re模块提供),不需要分隔符。
pattern = re.compile(foo)
haskell 下的 text.regex.posix 一样不需要分隔符。
my left foot =~ foo :: bool
有意思的是,php 5.3 开始废弃的 ereg系列函数是不加分隔符的:
eregi((ozilla.[23]|msie.3), $_server[http_user_agent]);
那么 preg 系列函数设计成 pattern 需要加分隔符,有何用意?
加了分隔符的话可以加一些模式修饰符m,u,i,s之类的吧,不加分隔符怎么加?而且preg系列的话是沿袭pcre系列的,所以遵从了pcre的一些基本规则吧,posix的就是不要分隔符的嘛。另外preg系列和perl还有些许不同的,所以应该不是跟perl学的吧。
参考资料:
pcre与perl的不同之处
pcre与posix正则的不同之处
正则表达式中可用的模式修饰符