regex - 为什么这个 Oracle regexp_like 测试为 FALSE?

标签 regex oracle plsql oracle11g

为什么这个 Oracle regexp_like 表达式测试为 FALSE? 我在 Oracle 11g 上运行此 PLSQL。

v_string 是一个 0 和两个空格。它在 REGEX101

处测试为 TRUE

Oracle regexp_like

 declare  v_string varchar2(30) := '0  ';

 begin    
 dbms_output.put_line('Length is ' || length(v_string) );   

 if  regexp_like(v_string,'^[0-9A-Z\s]{1,3}$') then   
      dbms_output.put_line('TRUE');    
 else    
      dbms_output.put_line('FALSE');    
 end if;   

 end;

最佳答案

不应在括号表达式内使用简写字符类,因为它被视为 2 个单独的字符:\s。使用等效的 [:space:] POSIX 字符类:

'^[0-9A-Z[:space:]]{1,3}$'
         ^^^^^^^^^

关于regex - 为什么这个 Oracle regexp_like 测试为 FALSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161449/

相关文章:

Python 使用正则表达式重命名文件

sql - AUTONOMOUS_TRANSACTION

JavaScript 正则表达式

regex - 正则表达式匹配A、B、AB

sql - 验证 sql/oracle 中的电子邮件/邮政编码字段

mysql - Oracle 是否有 mysql "FIELD"的等效函数

Oracle存储过程OUT参数

java - Java 正则表达式的后向组在附近没有明显的最大长度

java - 为 Oracle PL/SQL 包生成 JDBC 代码

regex - 如何在 VIM 查找/搜索中转义反斜杠和正斜杠?