如何使用正则表达式选择字母数字字符
Posted
技术标签:
【中文标题】如何使用正则表达式选择字母数字字符【英文标题】:How to select alphanumeric characters using regex 【发布时间】:2015-01-10 02:46:37 【问题描述】:我对 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 元
或
在NationalBrands 上保存最多10 次,在QuillBrandLaserToner 上保存20 次
提前致谢。 :)
【问题讨论】:
正如@benji 在下面指出的那样,您实际上想要做的是将那些非字母数字字符替换 - 所以您需要使用@987654322 @ 而不是REGEXP_SUBSTR
。
【参考方案1】:
我想你在找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
【讨论】:
您实际上可以从REGEXP_REPLACE()
中省略第三个参数''
,因为Oracle 默认使用NULL。以上是关于如何使用正则表达式选择字母数字字符的主要内容,如果未能解决你的问题,请参考以下文章
java中,正则表达式,如何过滤除数字和字母之外的其它字符??