23

こんにちは、regexp_replace (または妥当であれば他の postgres 関数) を使用して、文字列内の文字を '' に置き換える、つまり消去したいと考えています。

regexp_replace(('def4abcdef4ab','4', '','g') を使用すると、出現する '4' をすべて置換/消去できますが、同じプロセスで出現する 'e' と b' もすべて置換したいと考えています。 、regexp_replace(regexp_replace(regexp_replace())) のようないくつかのネストされたプロセスを使用せずに。

つまり、異なる文字列の短いリストを提供できるようにしたいのですが、それを一意の文字列に置き換える必要があります。

何か案は?よろしくお願いします!

4

4 に答える 4

31

標準的な方法は、次のように文字クラスを使用することです。

regexp_replace('def4abcdef4ab','[4eb]', '','g')

ただし、@alexius のメソッドは文字列も処理できます。

おそらく式を貪欲に定量化しないと、より効率的になるかどうかはわかりませ [4eb]+?

于 2013-10-24T08:59:40.443 に答える
8

regexp_replace('def4abcdef4ab','4|e|b', '','g')

于 2013-10-24T08:56:14.587 に答える
8

1 文字の置換に正規表現は必要ありません。変換機能を使用します。つまり、

translate('def4abcdef4ab','4eb', '')

文字列が複数文字の長さの場合は、replace() を使用します。ネストされていても、正規表現よりもパフォーマンスが向上する可能性があります。

于 2014-10-05T06:56:36.750 に答える