抓住整条线

时间:2012-02-17 20:39:35

标签: regex preg-match

如何捕获整条线,其中包含'mystring'。 例如:

mystring    er  as
        mystring2            //spaces before and after string

我已尝试^$,但无效。

谢谢。

4 个答案:

答案 0 :(得分:0)

^.*mystring.*$

您可能需要捕获括号,但可能不需要。

答案 1 :(得分:0)

使用标记m进行多线捕获,并观察两个掩码.*是否不合适。
在PHP中:

#^(.*?mystring.*?)$#m

#^(.*mystring.*)$#Um

答案 2 :(得分:0)

如果你想将一个字符串与'mystring'的任何变体匹配,这样做:/^.*mystring.*$/m

如果您想严格匹配'mystring',则需要word boundaries/^.*\bmystring\b.*$/m

模式解释:

  • ^开始匹配数据的开头或换行符
  • .*匹配零个或多个不是换行符的字符
  • \b匹配字边界
  • mystring匹配字符串:mystring
  • \b匹配字边界
  • .*匹配零个或多个不是换行符的字符
  • $匹配数据末尾或换行符(EOL)

'm'标志使^和$匹配数据中的换行符。

示例脚本:

<?php
$string = <<<EOT
        mystring0            
mystring    er  as
        mystring2            //spaces before and after string
EOT;

// match mystring and mystring2 for example
preg_match('/^.*mystring.*$/m', $string, $match);
echo "MATCH: <pre>" . $match[0] . "</pre>\n"; // prints '        mystring0            '

// only match mystring and mot mystring2 for example
preg_match('/^.*\bmystring\b.*$/m', $string, $match);
echo "MATCH: <pre>" . $match[0] . "</pre>\n"; // prints 'mystring    er  as'
?>

b.t.w。 pre标签是这样的,所以空格不会在HTML输出中修剪,只是从我认为可能是你的问题的空间的评论。

答案 3 :(得分:0)

怎么样:

$string = '
mystring    er  as
        mystring2            //spaces before and after string
';
preg_match_all('/(.*\bmystring\b.*)+/m', $string, $m);
print_r($m);    

<强>输出:

Array
(
    [0] => Array
        (
            [0] =>     mystring    er  as
        )

    [1] => Array
        (
            [0] =>     mystring    er  as
        )

)