【问题标题】:Transform a Regex to work in PHP转换正则表达式以在 PHP 中工作
【发布时间】:2016-05-25 22:58:55
【问题描述】:

我有以下正则表达式可以正常工作,但我不知道如何将其转换为在 PHP 中工作:

这是正则表达式:

(?s).features::before.*?background: url\('(.*?)'\)

谢谢。

编辑:

使用:preg_match("/(?s).features::before.*?background: url\('(.*?)'\)/", $DOM, $image_link);

这是我得到的:.features::before { background: url('http://3dprinting.com/wp-content/uploads/2016/05/Schermafbeelding-2016-05-24-om-15.59.19-1200x500.png')

我只需要:http://3dprinting.com/wp-content/uploads/2016/05/Schermafbeelding-2016-05-24-om-15.59.19-1200x500.png

【问题讨论】:

  • 它也应该在 PHP 中工作
  • 在 Php 中使用正则表达式分隔符
  • @anubhava 我用这个:preg_match('(?s).features::before.*?background: url(\'(.*?)\')', $DOM, $image_link );并没有检测到。
  • @anubhava 好的,我忘了斜线。好吧,现在它得到了整个句子。更新主要问题以发布结果。
  • 你需要访问第一个捕获组

标签: php regex


【解决方案1】:

您可以为您的正则表达式使用PCRE 的匹配重置功能:

preg_match("/(?s)\\.features::before.*?background: url\\('\\K[^']+/", $DOM, $image_link);

\K 重置报告匹配的起点。任何以前消耗的字符都不再包含在最终匹配中。

RegEx Demo

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2016-04-02
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多