用正则表达式删除空格,逗号,冒号,分号

时间:2015-04-23 01:59:46

标签: regex oracle

我正在尝试打印以下txt中的单词数量,忽略特殊字符,例如=,;:'。该功能已经有效,但我在这里找到的所有例子都没有正常工作,这就是我所尝试的。

txt是:

select name from v$database; select serial# from db4sql; clear 

Select (length (txt) - length(regexp_replace(txt, '[0-9\. ,]+$',''))

1 个答案:

答案 0 :(得分:1)

  

我正在尝试打印以下txt中的单词数量,忽略特殊字符,例如=,;:'。

当你需要的是计算单词数时,你会忽略标点符号这么复杂吗?这是一个使用 REGEXP_COUNT [[:blank:]] 字符类的简单查询。

SQL> WITH DATA AS(
  2  SELECT q'[select name from v$database; select serial# from db4sql; clear]' txt
  3  FROM dual
  4  )
  5  SELECT REGEXP_COUNT(txt, '[^[:blank:]]+') cnt
  6  FROM DATA
  7  /

       CNT
----------
         9

SQL>
  

删除空格,逗号,冒号,分号和正则表达式

确定。如果您只想替换标点符号并仅返回纯字母,请使用 [[:punct:]] 字符类。

SQL> WITH DATA AS(
  2  SELECT q'[select name from v$database; select serial# from db4sql; clear]' txt
  3  FROM dual
  4  )
  5  SELECT REGEXP_replace(txt, '[[:punct:]]') cnt
  6  FROM DATA
  7  /

CNT
----------------------------------------------------------
select name from vdatabase select serial from db4sql clear

SQL>