特定文字列を含む括弧で囲まれた文字列以外を正規表現マッチする書き方


以下文章があった場合、`[switch]`以外にマッチする正規表現の書き方を教えてください。

`こんにちわ。[feedback]おはよう。[switch]ありがとうございました。`

追記：  
画像の`[feedback]`にもマッチさせたい。(方法としては[switch]以外にマッチさせたいという意味です。

[![追記：画像の\[feedback\]にもマッチさせたい。\(方法としては\[switch\]以外にマッチさせたいという意味です。\)](https://i.stack.imgur.com/HrjLm.png)](https://i.stack.imgur.com/HrjLm.png)




### 正規表現にマッチする部分を削除する

「正規表現のパターンにマッチする部分以外を取り出す」のは「正規表現のパターンにマッチする部分を削除する」ことで実現できます。  
[`preg_replace`](http://php.net/manual/ja/function.preg-replace.php)
を用いて、空文字に置換すればよいです。

[code]

    <?php
    $str = '[switch]今日は。[feedback]おはよう。[switch]ありがとうございました。';
    $new_str = preg_replace('/\[switch\]/', '', $str);
    echo "$new_str\n";
    
[/code]

出力:

[code]

    今日は。[feedback]おはよう。ありがとうございました。
    
[/code]

### 文字列に一致する部分を削除する

metropolisさんのコメントで指摘されているのは、この例の場合は削除したい文字列は固定的で `[switch]`
と決まっていますので、正規表現を使う必要がないということです。  
[`str_replace`](http://php.net/manual/ja/function.str-replace.php) を使って、

[code]

    $new_str = str_replace('[switch]', '', $str);
    
[/code]

のようにすれば十分です。

