如何使用正则表达式选择字母数字字符

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中,正则表达式,如何过滤除数字和字母之外的其它字符??

在js中正则表达式如何判断用户输入的内容只能是数字和字母

在js中正则表达式如何判断用户输入的内容只能是数字和字母

如何使用 Perl 中的正则表达式匹配字符串中第 n 个索引处的字符/字母/符号/数字

用于检查字符串是不是严格字母数字的正则表达式

正则表达式必须包含字母数字和特殊字符