python - 为什么 PHP 的`preg`要求正则有分隔符?
程序员文章站
2022-05-24 13:27:48
...
难道是因为跟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正则的不同之处
正则表达式中可用的模式修饰符
上一篇: Python时间和字符串转换操作实例分析