我有像
这样的数据BR_TheDailyBeast.com__ROS_BN_DT_ROS Leaderboard_SUB_728x90
BR_CNET_ROS_BN_DT_Cnet reviewsAddedValueMid-pageMPU_SUB_300x250
O / P#BN和BN
实际O / P#ROS和BN
我需要提取第3和第4下划线。当我使用'[^_]+',1,4
时,它正在正确提取,但在__
这样的数据中,它处理单个下划线。
我应该如何处理这些案例以及解析逻辑。
请在此建议我。
谢谢!
答案 0 :(得分:1)
你可以使用它。
regexp_substr(your_string, '_([^_]*)', 1, 3, null, 1)
您也可以简单地使用普通的substr和instr函数。
substr(your_string,
instr(your_string,'_',1,3) + 1,
instr(your_string,'_',1,4) - instr(your_string,'_',1,3) - 1
)
答案 1 :(得分:0)
您可以尝试此解决方案:
SELECT
regexp_substr('BR_TheDailyBeast.com__ROS_BN_DT_ROS Leaderboard_SUB_728x90', '_+([^_]*)', 1, 3, NULL, 1) AS val1,
regexp_substr('BR_CNET_ROS_BN_DT_Cnet reviewsAddedValueMid-pageMPU_SUB_300x250', '_+([^_]*)', 1, 3, NULL, 1) AS val2
FROM dual;
输出:
VAL1 VAL2 ---- ---- BN BN