Подсчитать кол-во фиксированной подстроки в строке используя regexp

Hibiscus
Дата: 22.10.2015 12:35:01
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0

Есть строка 'asjkldfjkl;a ~/_jkl;2j- 0U*(@J _#*(E@#HJU_~/_8 -j-324 cfmk/.cmvkl; ~~'.
Нужно подсчитать сколько раз в ней содержится подстрока '~/_' (именно в такой последовательности три символа).


select length(regexp_replace('asjkldfjkl;a ~/_jkl;2j- 0U*(@J _#*(E@#HJU_~/_8 -j-324 cfmk/.cmvkl; ~~', '[^~/_]'))/3 from dual;

В таком виде к сожалению отрицание ^ применяется ораклом посимвольно. Есть ли возможность заставить применить отрицание к подстроке ?
JDS
Дата: 22.10.2015 12:47:50
Может просто как обычно?
SELECT (LENGTH(f) - LENGTH(REPLACE(f, '~/_', '')))/3 cnt
  FROM (SELECT 'asjkldfjkl;a ~/_jkl;_)2j- 0U*(@J _#*(E@#HJU_~/_8 -j-324 cfmk/.cmvkl; ~~' f 
          FROM dual)
Elic
Дата: 22.10.2015 12:50:13
а если бы он вез патроны?
Дата: 22.10.2015 13:21:42
Hibiscus
Нужно подсчитать сколько раз в ней содержится подстрока '~/_' (именно в такой последовательности три символа).
именно эти символы, или в искомой строке может оказаться что-нибудь типа многоточия '...'?
init.ora
Дата: 22.10.2015 13:53:56
select (length(str) -  coalesce(length(replace(str, pattern, '')), 0))/length(pattern)
from(
  select 'asjkldfjkl;a ~/_jkl;2j- 0U*(@J _#*(E@#HJU_~/_8 -j-324 cfmk/.cmvkl; ~~' str, '~/_' pattern
  from dual
)z
init.ora
Дата: 22.10.2015 13:54:44
init.ora
select (length(str) -  coalesce(length(replace(str, pattern, '')), 0))/length(pattern)
from(
  select 'asjkldfjkl;a ~/_jkl;2j- 0U*(@J _#*(E@#HJU_~/_8 -j-324 cfmk/.cmvkl; ~~' str, '~/_' pattern
  from dual
)z

JDS уже ответил
Hibiscus
Дата: 22.10.2015 14:30:54
Elic,

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0

Так то про regexp_count я помню, но увы.
Hibiscus
Дата: 22.10.2015 14:34:38
JDS,

Да, в таком варианте можно.
Просто думал что я не знаю как именно заставить отрицание ^ работать для набора.

Раз гуру не указали как сразу - видимо нельзя.