POSIX ERE( Extended Regular Expression )

  1. +
  2. ?
  3. |



9. + ( Plus )

구문 ( Syntax )

<plus> ::= +
  • 사용 예
    <pattern_expr><plus>
    

설명 ( Description )

  • 1 or MORE
  • 수량자(quantifier)로, <plus> 앞의 <pattern_expr>이 하나 이상 있음을 의미한다.
    • ex) a+ => a, aa, aaa, ...
  • <plus>만 있는 경우
    • ex) +
    • 결과
      • Oracle : zero-length match
      • PostgreSQL, MySQL, MariaDB : error 처리
  • 다른 수량자들과는 달리 zero-length match가 발생하지 않는다.
    • Oracle은 예외적으로 empty string에 대한 +도 zero-length match가 발생한다.
      • ex) +


예제 ( Examples )

SQL> SELECT REGEXP_SUBSTR( 'aaaaabbb', 'a+' ) AS RESULT FROM DUAL;

RESULT
--------------------
aaaaa

SQL> SELECT REGEXP_SUBSTR( 'abababc', '(ab)+' ) AS RESULT FROM DUAL;

RESULT
--------------------
ababab

SQL> SELECT REGEXP_SUBSTR( 'knight', '.+knight' ) AS RESULT FROM DUAL;

RESULT
--------------------
NULL

SQL> SELECT REGEXP_SUBSTR( 'GOLDILOCKS', 'GOLD(.+)' ) AS RESULT FROM DUAL;

RESULT
--------------------
GOLDILOCKS

  • <plus>만 있는 경우
    < Oracle >
    SQL> SELECT REGEXP_SUBSTR( 'ab', '+' ) AS RESULT FROM DUAL;
    
    RESULT
    ------------------------------
    NULL
    
    SQL> SELECT REGEXP_COUNT( 'ab', '+' ) AS RESULT FROM DUAL;
    
        RESULT
    ----------
             3
    
    
    < PostgreSQL >
    postgres=# SELECT REGEXP_MATCHES( 'ab', '+', 'g' ) AS RESULT;
    ERROR:  invalid regular expression: quantifier operand invalid
    
    
    < MySQL >
    mysql> SELECT REGEXP_SUBSTR( 'ab', '+' ) AS RESULT;
    ERROR 3688 (HY000): Syntax error in regular expression on line 1, character 1.
    
    
    < MariaDB >
    MariaDB [test]> SELECT REGEXP_SUBSTR( 'ab', '+' ) AS RESULT;
    ERROR 1139 (42000): Got error 'nothing to repeat at offset 0' from regexp
    
    




블로그 이미지

차트

소소한 일상 C코드 DB 항상 행복하게^-^★

,