我想在这两个字符串中删除方括号中的部分。在这个例子中,我想打印两个没有“[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代码,但似乎无法工作。
答案 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);
如果你想丢弃三度之间的任何东西,你的正则表达式实际上更简单
这将是\[.+\]