• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python – 为什么 PHP 的`preg`要求正则有分隔符?

php 搞代码 4年前 (2022-01-25) 14次浏览 已收录 0个评论
文章目录[隐藏]

难道是因为跟Perl学的?可是Perl是内嵌正则表达式的语言,用分隔符标明正则很自然。PHP既然是用preg系列函数处理,为什么还要用分隔符?

Python下也是用函数处理(re模块提供),不需要分隔符。

<code class="lang-python">pattern = re.compile("foo")</code>

Haskell 下的 Text.Regex.Posix 一样不需要分隔符。

<code class="lang-haskell">"my left foot" =~ "foo" :: Bool</code>

有意思的是,PHP 5.3 开始废弃的 ereg系列函数是不加分隔符的:

<code class="lang-php">eregi("(ozilla.[23]|MSIE.3)", $_SERVER["HTTP_USER_AGENT"]);</code>

那么 preg 系列函数设计成 pattern 需要加分隔符,有何用意?

回复内容:

难道是因为跟Perl学的?可是Perl是内嵌正则表达式的语言,用分隔符标明正则很自然。PHP既然是用preg系列函数处理,为什么还要用分隔符?

Python下也是用函数处理(re模块提供),不需要分隔符。

<code class="lang-python">pattern = re.compile("foo")</code>

Haskell 下的 Text.Regex.Posix 一样不需要分隔符。

<code class="lang-haskell">"my left foot" =~ "foo" :: Bool</code>

有意思的是,PHP 5.3 开始废弃的 ereg系列函数是不加分隔符的:

<code class="lang-php">eregi("(ozilla.[23]|MSIE.3)", $_SERVER["HTTP_USER_AGENT"]);</code>

那么 preg 系列函数设计成 pattern 需要加分隔符,有何用意?

加了分隔符的话可以加一些模式修饰符m,u,i,s之类的吧,不加分隔符怎么加?而且preg系列的话是沿袭

!本文来源gaodai.ma#com搞##代!^码网(

搞gaodaima代码PCRE系列的,所以遵从了PCRE的一些基本规则吧,POSIX的就是不要分隔符的嘛。另外preg系列和perl还有些许不同的,所以应该不是跟perl学的吧。

参考资料:
PCRE与perl的不同之处
PCRE与POSIX正则的不同之处
正则表达式中可用的模式修饰符


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python – 为什么 PHP 的`preg`要求正则有分隔符?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址