やりたいこと
**先頭ではない|**を置換したい。
Markdownの表をHTMLに変えたかった。
Markdown表変換ツール - MarkDown Convertを使うという手もあります。
正規表現
参考 : 正規表現で、「先頭にある」文字列ではなく、「先頭にはない」文字列だけにマッチさせたい場合 - Sakura scope
(.)\|(.)
考え方
否定を考えるのではなく^\|(先頭の|)じゃなくて直前に任意の1文字.がある\|と考える。
.\|.ではなく(.)\|(.)とするのは直前にある任意の1文字.を置換後の文字で\1 \2として削除されないようにする。
hoge|fugaをhoge</td><td>fugaにしたくて.\|.で置換後文字を</td><td>にするとhog</td><td>ugaになって、.に相当するgとfが削除される。
例
置換前
|head1|head2|head3|
|:-:|:-:|:-:|
|hoge|fuga|poo|
|hoge|fuga|poo|
|hoge|fuga|poo|
| 置換対象 | 置換後 |
|---|---|
| (.)\|(.) | \1</td><td>\2 |
変換後
|head1</td><td>head2</td><td>head3|
|:-:</td><td>:-:</td><td>:-:|
|hoge</td><td>fuga</td><td>poo|
|hoge</td><td>fuga</td><td>poo|
|hoge</td><td>fuga</td><td>poo|