m正则表达式模式修饰符

时间:2016-03-03 11:38:40

标签: php regex pcre

$subject = "SIverygood \n SIverygood\n";
$pattern = '/^SI/m';

preg_match_all($pattern, $subject, $matches2,PREG_OFFSET_CAPTURE);
var_dump($matches2);

我无法理解 m s 修饰符。我希望在每个换行符的开头都能获得SI。我这样做是出于练习目的而理解m和s修饰符。 上面的示例只返回 SI 。但我想要两个。

1 个答案:

答案 0 :(得分:2)

m是一个多行修饰符,它将使起始锚点与每行的开头匹配,而不是整个字符串。在第一行开头的字符串中,您有SI并返回它,但在第二行中,该行的开头是空格而不是SI

如果要忽略行前面的空格,可以使用以下正则表达式:

$pattern = '/^\s*(SI)/m';

获得第一个匹配组的结果。阅读有关修饰符http://www.regular-expressions.info/modifiers.html

的更多信息