POSIX ERE( Extended Regular Expression )
- +
- ?
- |
9. + ( Plus )
구문 ( Syntax )
<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가 발생한다.
예제 ( 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