2016-09-14 2 views
1

こんにちは、私はロジック以下で正規表現を記述する必要があります。文字は「\」コンマの前にある場合を除き、毎秒コンマで正規表現は、第二のカンマで分割

スプリット。それを明確にするかもしれない例

B、

1,1A

2,2A

3,3Aの\:

1,1a,2,2a,3,3a\,b,4,4a 

は、結果を取得する必要があります

4,4a

SELECT REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) TXT 
FROM DUAL 
CONNECT BY REGEXP_SUBSTR (text, '[^,]+,[^,]+', 1, LEVEL) IS NOT NULL; 

だから、現時点での私の正規表現は次のとおりです:毎秒コンマで分割'[^,]+,[^,]+'

これは私の次のコードです。

+0

を試してみて、それは問題は何ですか...私には正常に見えますか?なぜ '3,3a \、b'は2でなく3つのカンマを取るのですか? – sagi

+0

ルック\は、Oracleのエスケープ文字です。文字列を '1,1a、2,2a、3,3a \\、b、4,4a'のように変更する必要があります – dinesh

+0

@sagiこれは" Test \、Test2 "のようなテキストでもよいので、 \はコンマの前の文字ですが、このコンマは無視してください。 – ZerOne

答えて

1

私はちょうどあなたのクエリを実行した(\\,|[^,])+代わりの平野[^,]+

+0

ありがとうございます!私の正規表現は次のようになりました: '(\\、| [^])+、(\\、| [^])+' – ZerOne

+0

FYI - @ZerOneあなたは常にコンマで区切られたセットを持っていることを確認してください。結果。つまり、2つの1の間に余分なカンマを置いた場合、結果は間違っています。これは途中でデータがどのようにスクラブされているかによっては問題にはならないかもしれません。リストを解析するためによく使われる正規表現形式 '[^、] + 'は、NULL要素を扱えません。詳細については、http://stackoverflow.com/a/31464699/2543416を参照してください。 –

関連する問題