PostgreSQL (9.2) で次の regex_replace ステートメントを試しています
# SELECT regexp_replace('_this._is_a_long_entry._of.nonsense_text', '\._|^_', '$','g');
目的:
ピリオドの前にあるすべてのアンダースコア文字を「$」に置き換えます。位置1に固定されたアンダースコアも置き換えています。これは機能しています。両方の試合を 1 つのステートメントに詰め込みたいと思います。これはすべて、私たちが持っているいくつかの奇妙なテキストを PostreSQL ltree 構造にプッシュするためのメカニズムを開発することです。
問題:
ピリオドの文字を傷つけることなく、上記の最初の置換を機能させるにはどうすればよいですか?
結果が次のようになることを確認したいと思います。
$this.$is_a_long_entry.$of.nonsense_text
注: アンダースコアの明示的なキャプチャも試みましたが、PG の実装はこれを無視しているようです:
# SELECT regexp_replace('_this.is_long_entry._of.nonsense_text', '\.(_)|^_', '$','g');