我的正则表达式有问题。我试图匹配包含单词“RewriteBase”的文件中的所有行与可能的空格。示例文件是:
#RewriteBase /yardley/development
RewriteBase /yardley/
我的模式及其结果:
@RewriteBase\s*(.*)@ //matches both lines - OK
@RewriteBase\s*(.*)$@ //matches first line only - why?
@^.*RewriteBase\s*(.*)@ //doesn't match any - why? It should accept all characters before "RewriteBase"
我完全坚持下去了。非常感谢
答案 0 :(得分:1)
由于您使用的是行开始锚点^
或行尾锚点$
,因此第二个正则表达式只匹配第二行,第三个正则表达式只匹配第一行。
您可以使用多行(m)开关来匹配3个正则表达式中的所有行:
$s = <<< EOF
#RewriteBase /yardley/development
RewriteBase /yardley/
EOF;
if (preg_match_all('@RewriteBase\s*(.*)$@m', $s, $arr))
var_dump($arr[0]);
<强>输出:强>
array(2) {
[0]=>
string(32) "RewriteBase /yardley/development"
[1]=>
string(21) "RewriteBase /yardley/"
}