PHP正则表达式匹配四个空格而不是五个空格

时间:2015-02-02 07:41:01

标签: php regex

    This is a line indented with four spaces
        another one with eight spaces
    now the last with four

这是我的字符串我想在四个空格上preg_split而不是更多,我正在使用,

preg_split('/^    /m', $str)

结果:

array(4) {
  [0]=>
  string(0) ""
  [1]=>
  string(41) "This is a line indented with four spaces
"
  [2]=>
  string(34) "    another one with eight spaces
"
  [3]=>
  string(22) "now the last with four"
}

我希望有超过四个空格的行成为第一个分割的一部分,我很难理解非捕获或负前瞻正则表达式。

1 个答案:

答案 0 :(得分:1)

要拆分4个空格而不是5号,你可以使用这个负向前瞻:

$arr = preg_split('/^ {4}(?! )/m', $str);

其中(?! )为负前瞻,如果旁边有第5个空格,将无法在开始时匹配4个空格。


编辑避免拆分数组中的空值,请使用:

 $arr = preg_split('/^ {4}(?! )/m', $str, -1, PREG_SPLIT_NO_EMPTY);