正規表現の文字列否定 例外付きの置換

.net framework 上での文字列置換です。

やりたいこと

| はマッチして欲しいけど、[|] はマッチして欲しくない。

答え

(?<!\[)\|(?!\])

文字列否定は結構厄介と、Google先生もおっしゃっていました。行錯誤の結果たどり着いた答え。.net framework では、ゼロ幅の否定的先読みアサーション、ゼロ幅の否定的後読みアサーション が使えます。このキーワードで検索してみてください。

参考

(?<!  ) 直前にこのパターンが現れないことを確認する
(?!   ) 直後にこのパターンが現れないことを確認する