PHP爆炸所有方括号

时间:2014-12-31 14:03:31

标签: php regex

如何爆炸方括号,然后用一些文字替换它们?

我尝试了以下代码,但它似乎只识别前两个:

正则表达式代码:

/(\[[\w\s]+\])/g

任何人都可以建议在正则表达式代码中需要更改哪些内容?

$data = "[Foo Bar],[Suganthan],['Test1',1,5.09,12.50, 7.41]";

but it only finds: [Foo Bar],[Suganthan]

preg_replace('/(\[[\w\s]+\])/', 'replaced', $data);

3 个答案:

答案 0 :(得分:5)

那是因为你限制了角色类中的匹配字符。 [\w\s]+仅匹配所有字母数字和空格以及下划线。

使用[^]]+

表示匹配 ]

以外的任何内容

答案 1 :(得分:3)

/(\[.*?\])/g

你可以试试这个。你的正则表达式不匹配['Test1',1,5.09,12.50, 7.41]这个不匹配,因为它,'没有被\w\s

所涵盖

或者只是使用

(\[[\w\s',.]+\])

参见演示。

https://regex101.com/r/rU8yP6/23

答案 2 :(得分:2)

您可以使用此正则表达式捕获所有方括号内容:

(\[[^]]+\])

RegEx Demo

<强>代码:

$data = preg_replace('/\[[^]]+\]/', 'replaced', $data);

如果您只想查找[]内的内容,请使用 lookarounds ,如此正则表达式:

(?<=\[)[^]]+(?=\])

并使用代码:

$data = preg_replace('/(?<=\[)[^]]+(?=\])/', 'replaced', $data);