如何使用正则表达式选择包含数字和字母的字符

3

我对Oracle中的regexp_substr还比较新,我想从下面的字符串中提取只包含字母和数字的字符。我已经使用了下面的查询,但似乎没有按预期工作。

select 
    regexp_substr('Save up to 10% on National Brands and 20% on Quill Brand Laser Toner','[[:alnum:]]+') string 
from dual;

我希望输出结果如下:

国家品牌可节省10%,Quill品牌激光墨盒可节省20%

或者

Saveupto10onNationalBrandsand20onQuillBrandLaserToner

谢谢。 :)

正如@benji在下面指出的那样,你实际上想要做的是用空白替换那些非字母数字字符 - 所以你需要使用REGEXP_REPLACE()而不是REGEXP_SUBSTR - David Faber
1个回答

3
我认为您正在寻找regexp_replace函数。
select 
    regexp_replace('Save up to 10% on National Brands and 20% on Quill Brand Laser Toner',
                 '[^[:alnum:]]', '') string from dual;

SQL Fiddle


4
你实际上可以从 REGEXP_REPLACE() 函数中省略第三个参数 '',因为 Oracle 默认使用 NULL。 - David Faber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接