正则表达式-在双方括号之间获取文本

时间:2018-10-01 10:08:53

标签: php regex laravel

我正在寻找一种使用正则表达式获取文本的方法,该文本位于2个方括号和方括号之间。例如:

$text = "[[ Hello I like trains ] [ I'm hungry ]]
             [[ I smell good ] [ I use stackoverflow ]]" 

//多数民众赞成在一个字符串,中断只是为了更容易看到,有两个“ [[...]]”句子

我现在需要的是一个看起来像这样的数组:

$array = [
    0 => "[Hello I like trains] [I'm hungry]",
    1 => "[I smell good] [I use stackoverflow]"
];

我尝试过的是:

if (preg_match_all('\[\[(.*?)\]\]', $text, $matches)) {
      dd($matches);
} else return "hello";

我得到的是:

preg_match_all(): Delimiter must not be alphanumeric or backslash

说实话,我对regex并不是很熟悉。

我只希望正则表达式切出介于[[[“”]]“之间的文本。但是结果中必须有双方括号的第一个“ [”和最后一个“]”,并且不应将其删除。

如此

"[[ Hello I like trains ] [ I'm hungry ]]"

将是

"[ Hello I like trains ] [ I'm hungry ]"

最后。

如果还有更多的[[[“”]]“句子,则正则表达式应将其放在数组中。就像上面的示例结果数组一样。

我正在使用PHP / Laravel 5.6

1 个答案:

答案 0 :(得分:0)

您需要这样的东西

if (preg_match_all('/\[(\[(.*?)\])\]/is', $text, $matches)) {
  print_r($matches[1]);
} else return "hello";