在分隔符之后获取字符串到行尾

时间:2013-07-24 14:03:40

标签: php regex

我正在尝试使用PHP和preg_match在分隔符之后获取字符串到行尾。这些是我的代码:

<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We
EOT;
preg_match("#var2=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>

这可行,但不适用于最后一行,如果我在正则表达式中将 var2 替换为 var3 ,则生成的数组将为空。

4 个答案:

答案 0 :(得分:3)

使用交替:

#var2=(.*?)(\n|$)#
           ^  ^^^

答案 1 :(得分:3)

使用多行模式m修饰符,以便$匹配换行符或字符串结尾:

preg_match('#var2=(.*?)$#m', $stringa, $boh);

答案 2 :(得分:1)

原因是你需要在“我们”之后换行才能正确匹配:

<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We

EOT;
preg_match("#var3=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>

答案 3 :(得分:0)

您可以使用排除所有换行符的[^\n]代替使用该点:

preg_match('~(?<=var3=)[^\n]+~', $stringa, $boh);