문제

이 질문은 Oracle, PL / SQL 및 regexp_like 함수와 관련됩니다.

모든 전형적인 특수 문자에 일치하는 문자 집합을 작성하려고합니다.내 문자 집합은 현재 다음과 같습니다 :

pattern := '[-~`!@#$%^&*\(\)\\{}_+=|''";:,./?]+';
.

이 문자 집합에 대괄호를 추가하고 싶습니다. 그러나 내가 추가하려고하는 일은 무엇이든간에 ']'가 작동하지 않습니다.다음은 문제점을 보여주는 간단한 예입니다.

select
  case when regexp_like('w]ord', '[\]]+') then 'true'
  else 'false' end
from dual;
.

이것은 false를 반환하므로 ']'문자와 일치하지 않는 의미입니다.흥미롭게도, 나는 이것이 true를 반환하기 때문에 '['문자를 일치시킬 수 있습니다 :

select
  case when regexp_like('w[ord', '[\[]+') then 'true'
  else 'false' end
from dual;
.

도움이 되었습니까?

해결책

백 슬래시가 브래킷 내에 특별한 의미가 있다고 생각하지 않습니다.regexp_like('a]b','[]]') 또는 or : regexp_like('a]b','([whatever]|\])')를 사용할 수 있습니다.

regexp_like('a]b','[^[:alnum:]]')를 사용할 수없는 이유는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top