問題タブ [regexp-replace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - SQL の正規表現
@ 文字で始まる単語を除いて、ORACLE の動的クエリのすべての単語を NULL に置き換える必要がある正規表現を作成する必要があります。例えば:
SQL:
REGEXP_REPLACE の使用
次の結果が得られるはずです。
そして、いろいろな方法でいくつか試してみましたが、まだできません。
彼らはあなたがこれを行うことができるかどうか知っています?? そして、正規表現がいかに深刻か。
PL/SQLを扱っています
sql - OracleでREGEXP_REPLACEを使用したCSV値の区別
以下のようなデータを含むテーブルがあります
そして、以下のような出力が必要です
出力
以下のクエリを試しました。しかし、出力は異なります。
しかし、出力は
パターンの検索に regexp_replace のみを使用したい。私を助けてください。
oracle - Oracleでregexp_replaceによってカンマ区切りのリストから重複を削除するには?
私は持っている
私が欲しい
私は試した
そして、私は出力を取得します
しかし、私は出力が
助けてください。
postgresql - PostgreSQL : 特殊文字から始まる varchar フィールドから削除する方法は?(regexp_replace)
VARCHARフィールドで文字「M」が最初に出現した後のすべてを削除したい(包括的)。
それでSELECT regexp_replace('The world Mine is mine')
生成する必要があります:'The world '
これは
SELECT left('The world Mine is mine',INSTR('The world Mine is mine','M',1,1)-1)
left
しかし、となしでそれを達成する方法はinstr
? 回答をいただければ幸いです。
javascript - 正規表現と変数
1つだけ質問があります(毎日のように)
しかし、それは機能しません。正規表現で変数を使用する方法がわかりません。ありがとう、私の英語でごめんなさい
regex - regexp_replace を使用して、一致する文字列全体ではなくキャプチャ グループのみを置換する方法
データベースには、「150 W 96 Th St」および「4514 282 Nd St」に類似した値を含む列があります。お気付きかもしれませんが、通りの数字と接尾辞の間には '96 TH' のようにスペースがあります。
そのスペースを削除する postgresql クエリを作成しようとしています。以下を使用します。
私は得る:
キャプチャ グループのみが返されることを示します。
ただし、実行すると
私は得る
一致する文字列全体が置き換えられます。
私も試してみました
最初のキャプチャ グループを置き換えるだけだと思いました。
他に何を試す必要がありますか?
sql - Oracle db: 文字列の特定の位置にスペースを追加する方法
文字列 (varchar2) があり、a が 2 つ連続する場所にスペースを追加したいとします。たとえば、次のようになります 'graanh' -> 'gra anh'
。
replace
わかりました。これは、またはを使用して行うのは簡単ですregexp_replace
。しかし、どちらも a が3つ以上連続するとチョークします。例えば:
これは、一致パターンの「次の」出現の検索が「前の」パターンの終了後に開始されるためです。実際、regexp_count('aaaaa', 'aa')
4 ではなく 2 を返します。
望ましい結果は'aaaaa' -> 'a a a a a'
です。
問題は、実際には、パターンを置き換えたくないということです'aa'
。私が置き換えたいのは、空の文字列の両側にある空の文字列 BETWEEN a です。したがって、説明は次のようになります。両側に a がある空の文字列をすべて検索し、その空の文字列をスペースに置き換えます。
これは文字列または正規表現関数で実行できますか? 再帰クエリや (恐ろしい!) PL/SQL プロシージャを使用したソリューションを提供しないでください。それらが実行できることは知っていますが、「自然な」解決策、つまりこの質問のために正確に存在するツールが存在するかどうかに興味があります。
最悪の場合、replace(replace('aaaaa', 'aa', 'a a'), 'aa', 'a a')
トリックを行います。これも最良のケースですか?
これが奇妙な要件だと思わないでください: コンマ区切りの文字列を分割するさまざまな方法を試しています。一部のメソッドには、そのような文字列内の NULL トークンを無視するという非常に厄介な習慣があります (つまり、2 つの連続するコンマからは、当然のように NULL を取得できません)。したがって、これらのメソッドを使用する前に、入力文字列を解析して、連続するコンマの間にスペースまたは文字列 'NULL' などを追加する必要があります。もちろん、すべてのコンマの後 (および文字列の先頭) にスペースを追加し、トークンに分割した後、各トークンの先頭からスペースを削除することをお勧めします。しかし、これは私が上で尋ねた質問を提起し、それ自体にメリットがあると思います.
ありがとうございました!
編集(2020 年 4 月 13 日) この質問を最初に投稿して以来、正規表現について多くのことを学びました。これで専門用語がわかりました。(私が行った説明は正しいことがわかりました。専門用語を使用していなかっただけです。)ここで必要なのは、1回のパスで必要な場所にスペースを追加できるようにするために、ルックアラウンドとOracleの正規表現です。それらをサポートしないでください。編集終了
oracle11g - Oracle SQLで文字列の先頭にのみ発生を置き換える方法は?
ソース列があり、05、5 971971、および 97105 で始まる文字列値を検索して、9715 に置き換えたいと考えています。出力テーブルに示すように。
SOURCE OUTPUT
0514377920 971514377920
544233920 971544233920
971971511233920 971511233920
9710511233920 971511233920
最初のケースで機能する以下を試しました。
しかし、2番目のケースでは、以下は機能しません:
正規表現に何か問題があります。私が得ているように: ORA-12727: 正規表現の後方参照が無効です。