我想提取某些字符串的两个部分。为此,我想使用正则表达式。例如,字符串是: Big_Dog_0044_0080,my是: Big_Dog_(0-9+)_?(0-9A-Z*) Group 1将是0044,第二个是0080。
现在,我的问题是将其转化为select语句:我尝试了使用regex_substr。
这是我的结果:
select
'Big_Dog_0044_0080' as TestString,
regexp_substr('Big_Dog_0044_0080', '([0-9]+)') Group1 ,
regexp_substr('Big_Dog_0044_0080', '([0-9A-Z]*)') Group2 from dual;我的产出:
TESTSTRING Group1 Group2
Big_Dog_0044_0080 0044 B首先,第二组是错的,我期望0080。我在这里做错了什么?
第二个问题,还有其他解决办法吗?我想用5-6种不同的regexp。例如,下一个将是(A)_CatWeezle
我的意思是,选择输入字符串列并遍历可能的regexp。如果一个regexp匹配,则停止并提取值。
谢谢!
发布于 2021-12-14 10:02:28
问题的第一部分很简单:
SQL> SELECT 'Big_Dog_0044_0080' AS TestString,
2 REGEXP_SUBSTR ('Big_Dog_0044_0080', '\d+', 1, 1) Group1,
3 REGEXP_SUBSTR ('Big_Dog_0044_0080', '\d+', 1, 2) Group2
4 FROM DUAL;
TESTSTRING GROU GROU
----------------- ---- ----
Big_Dog_0044_0080 0044 0080
SQL>我不太明白你所说的CatWeezle是什么意思。
https://stackoverflow.com/questions/70346797
复制相似问题