[英]Using Regular Expression Oracle
我正在尋找使用正則表達式來捕獲字符串中的最后一個值。 我復制了我要解析的數據的示例。 我正在使用oracle語法。
示例數據:
||CULTURE|D0799|D0799HTT|
||CULTURE|D0799|D0799HTT||
我正在尋找最后一組管道之前的最后一個值:
D0799HQTT
D0799HQTT
我能夠創建一個regexp_substr返回文化:
REGEXP_SUBSTR(c.field_name, '|[^|]+|')
但我一直無法弄清楚如何從頭開始尋找一個或兩個管道,並返回我要尋找的值。 如果您需要更多信息,請與我們聯系。
您可以嘗試以下方法:
select rtrim(regexp_substr('||CULTURE|D0799|D0799HTT||',
'[[:alnum:]]+\|+$'), '|')
from dual;
或像這樣:
select regexp_replace('||CULTURE|D0799|D0799HTT||',
'(^|.*\|)([[:alnum:]]+)\|+$', '\2')
from dual;
最好拔出不是管道的所有字符,而不是假定它們適合特定的字符集:
select regexp_replace(regexp_substr('||CULTURE SUBS|INTERNATIONAL TESTING S.A.|ISLAND TEST_PEACE|', '[^|]+\|+$'), '\|', '') from dual;
考慮以下正則表達式...
(?<=\|)[\w\d]*?(?=\|*$)
祝好運!
SELECT REPLACE
(
REGEXP_SUBSTR(str, '\w+\W{0,}$')
, '|'
) AS result
FROM
(
SELECT '||CULTURE|D0799|D0799HTT|' AS str FROM DUAL UNION ALL
SELECT '||CULTURE|D0799|D0799HTT||' AS str FROM DUAL
)
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.