将 Perl Regex 转换为 PHP

将 Perl Regex 转换为 PHP

我在 PERL 中有以下正则表达式,需要将其转换为 PHP

if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }

我目前在 PHP 中有以下内容来匹配它,但没有得到相同的结果:

preg_grep('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/', $lines);

有人能告诉我我所得到的是否相同或者我是否弄错了吗?

答案1

preg_grep返回一个数组,而如果你使用preg_match,您将获得一个布尔值。因此,如果您使用:

if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }

它相当于:

if(preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $line)) { };

尽管你可以稍微简化正则表达式:

if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line)) { };

如果你想查看比赛,你可以这样做:

if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line, $match)) {
    print_r($match);
};

答案2

示例代码:

if (preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $lines)) {

  echo "A match was found.";

}

相关内容