0

Oracle 11g データベースで PL/SQL v10 を使用しています。
抽出する必要がある質問テーブルの説明列に格納されているコードがあります。そのために、101regex では正常に動作するが oracle では失敗する正規表現の作成に取り組んでいました。間違った構文を使用していたと思います。

select '''' || listagg(regexp_substr(q.questiondescription,'(LIF|LPA) ?\d{1,2}.\d{1,2}(\.\d{1})?'), ''', ''') 
within group (order by q.questionid) || '''' 
from question q
where q.isthunderheadonly = 0 or q.isthunderheadonly is null

一致させる必要があるパターン:

LIF 1.2 Both
LIF 2.7.1 Address Line 1
LIF 4.13 Occupation
LIF 10.6.1 Address Line 1
LPA0.1 What type of LPA do you want?
LPA0.2 Do you have same attorneys with your partner ?

正規表現のどこで間違ったのでしょうか?

編集:私が得ている結果

'LIF 3.1', 'LIF 4.1', 'LIF 4.2', 'LIF 5.1', 'LIF 7.1', 'LPA0.1', 'LPA0.2'

2番目のグループ以降はすべて無視されていると思います。

4

2 に答える 2

1

私は正規表現を変更するので、あなたのオラクルでうまくいくことを願っています:)

L(IF|PA\d{1,}(\.\d{1,}){0,1}) {1,}(\d{1,}(\.\d{1,}){0,}){0,1}

正規表現の視覚化

Debuggex デモ

于 2014-10-15T09:01:16.797 に答える