はじめに
業務でvb.netにより業務系アプリを開発しており、
躓いた個所を記録として残すため、ここに書きました。
やりたかったこと
データ出力する文章中に[]が含まれていたら、[]の前に改行をいれる
(前提として、出力しようとしているデータは、文字列の先頭に[]がついた文章が結合されている)
以下のコードを記載し、文章として取得したデータ内の「[」の前に改行を入れるように正規表現を設定した。
Regex.Replace(Eval("文章").ToString, "(?!^)[", "<br />[")
実行したところ、以下の例外が発生!
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3378031%2F1544301e-0c25-cf17-7924-501a6ddbc602.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a6ded4b3c5053a81ecb7b5c400de0c90)
調べたところ、「[」はメタ文字というもので、「]」とセットで使用しなければいけないことがわかった。
そして、「[」を一つの文字として扱うためには、前に「¥」をつける必要があることがわかり、以下のように修正したところ、想定通りの動きになった!!
Regex.Replace(Eval("文章").ToString, "(?!^)[", "<br />[")
おわりに
メタ文字は他にも存在しており、今回のように正規表現内に設定する時は、注意したいと思う