PHP正则表达式 - preg_replace

时间:2014-01-01 15:14:18

标签: php regex preg-replace

我想在这两个字符串中删除方括号中的部分。在这个例子中,我想打印两个没有“[No Change]”和“[New]”的字符串。

<?php

$str_1 = "[No Change]  Busta Rhymes ft. Kanye West, Lil Wayne & Q-Tip - Thank You";
$str_2 = "[New] B.o.B ft. Chris Brown - Throwback";

$str_1 = preg_replace("/\[[^A-Z0-9a-z\w ]\]/", "", $str_1);
$str_2 = preg_replace("/\[[^A-Z0-9a-z\w ]\]/", "", $str_2);

echo $str_1; // Result: [No Change]  Busta Rhymes ft. Kanye West, Lil Wayne & Q-Tip - Thank You
echo $str_2; // Result: [New] B.o.B ft. Chris Brown - Throwback
?>

我编写这个PHP代码,但似乎无法工作。

3 个答案:

答案 0 :(得分:1)

尝试以下正则表达式模式:

/\[[^\]]*\]?/g

答案 1 :(得分:1)

有正则表达式代码

$str_1 = preg_replace('/\[[^\]]*\]/', "", $str_1);
$str_2 = preg_replace('/\[[^\]]*\]/', "", $str_2);

不要为regexp使用双引号,那么你也需要转义字符'\'

答案 2 :(得分:-1)

$str_1 = preg_replace("/\[[A-Z0-9a-z\w ]+\]/", "", $str_1);
$str_2 = preg_replace("/\[[A-Z0-9a-z\w ]+\]/", "", $str_2);

DEMO

如果你想丢弃三度之间的任何东西,你的正则表达式实际上更简单 这将是\[.+\]