我正在尝试打印以下txt中的单词数量,忽略特殊字符,例如=,;:'。该功能已经有效,但我在这里找到的所有例子都没有正常工作,这就是我所尝试的。
txt是:
select name from v$database; select serial# from db4sql; clear
Select (length (txt) - length(regexp_replace(txt, '[0-9\. ,]+$',''))
答案 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>