IT/Regular Expression
[REGEX] :: POSIX ERE Meta Character '' 10. ? ( question mark ) ''
차트
2019. 10. 17. 16:31
POSIX ERE( Extended Regular Expression )
- +
- ?
- |
10. ? ( Question Mark )
구문 ( Syntax )
<question_mark> ::= ?
- 사용 예
<pattern_expr><question_mark>
설명 ( Description )
- 0 or 1
- 수량자(quantifier)로, <question_mark> 앞의 <pattern_expr>이 없거나 하나 있음을 의미한다.
- ex) a? => , a
- <question_mark>만 있는 경우
- ex) ?
- 결과
- Oracle : zero-length match
- PostgreSQL, MySQL, MariaDB : error 처리
- zero-length match가 발생할 수 있다.
예제 ( Examples )
SQL> SELECT REGEXP_SUBSTR( 'god', 'goo?d' ) AS RESULT FROM DUAL; RESULT -------------------- god SQL> SELECT REGEXP_SUBSTR( 'good', 'goo?d' ) AS RESULT FROM DUAL; RESULT -------------------- good SQL> SELECT REGEXP_SUBSTR( 'goood', 'goo?d' ) AS RESULT FROM DUAL; RESULT -------------------- NULL SQL> SELECT REGEXP_SUBSTR( 'ababc', '(ab)?' ) AS RESULT FROM DUAL; RESULT -------------------- ab SQL> SELECT REGEXP_SUBSTR( 'knight', '.?night' ) AS RESULT FROM DUAL; RESULT -------------------- knight SQL> SELECT REGEXP_SUBSTR( 'abc', 'z?' ) AS RESULT FROM DUAL; RESULT -------------------- NULL SQL> SELECT REGEXP_COUNT( 'abc', 'z?' ) AS RESULT FROM DUAL; RESULT ---------- 4
- <question_mark>만 있는 경우
< 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