PostgreSQLregexp_replace
関数を使用して、文字列内の角かっこ、括弧、円記号をエスケープして、その文字列を正規表現パターン自体として使用できるようにしています(この文字列を使用する前に他の操作も行われていますが、これらはの範囲外です。この質問。アイデアは置き換えることです:
[
と\[
]
一緒\]
(
にと\(
)
一緒\)
\
に\\
正規表現に関するPostgresのドキュメントページには、次のように記載されています。
置換文字列には\nを含めることができます。nは1〜9で、パターンのn番目の括弧で囲まれた部分式に一致するソースサブ文字列を挿入する必要があることを示します。\&を含めると、パターン全体に一致する部分文字列を示すことができます。挿入する必要があります。置換テキストに文字通りの円記号を入れる必要がある場合は、\を記述します。
ただしregexp_replace('abc [def]', '([\[\]\(\)\\])', E'\\\1', 'g');
、を生成しabc \ def\
ます。
その同じページのさらに下に、\\1
表記法を使用する例が示されています-それで私はそれを試しました。
それでも、regexp_replace('abc [def]', '([\[\]\(\)\\])', E'\\\\1', 'g');
を生成しabc \1def\1
ます。
これは予想されることだと思いますが、regexp_replace('abc [def]', '([\[\]\(\)\\])', E'.\\1', 'g');
を生成しabc .[def.]
ます。つまり、エスケープは標準の円記号以外の文字で機能します。
この時点で、私はどのように進めるかわかりません。私が欲しい代替品を実際に私に与えるために私は何ができますか?