POSIX BRE( Basic Regular Expression )
- ^
- $
- .
- *
- \
- (
- {
- [
4. * ( Asterisk )
구문 ( Syntax )
<asterisk> ::= *
- 사용 예
<pattern_expr><asterisk>
설명 ( Description )
- 0 or MORE
- 수량자(quantifier)로, <asterisk> 앞의 <pattern_expr>이 없거나 하나 이상 있음을 의미한다.
- ex) a* => , a, aa, aaa, ...
- <asterisk>만 있는 경우
- ex) *
- 결과
- Oracle : zero-length match
- PostgreSQL, MySQL, MariaDB : error 처리
- zero-length match가 발생할 수 있다. ( 이에 대해선 다음에 다시 설명 )
수량자(quantifier)란?
수량자는 주어진 <pattern_expr>의 수량(quantity)을 지정해주는 메타문자이다.
일반적으로 수량자는가능한 많은 문자와 매칭 시키려는 성질을 가지고 있다.
예제 ( 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 -------------------- knight SQL> SELECT REGEXP_SUBSTR( 'GOLDILOCKS', 'GOLD(.*)' ) AS RESULT FROM DUAL; RESULT -------------------- GOLDILOCKS SQL> SELECT REGEXP_SUBSTR( 'abc', 'z*' ) AS RESULT FROM DUAL; RESULT -------------------- NULL SQL> SELECT REGEXP_COUNT( 'abc', 'z*' ) AS RESULT FROM DUAL; RESULT ---------- 4
- <asterisk>만 있는 경우
< Oracle > SQL> SELECT REGEXP_SUBSTR( 'ab', '*' ) AS RESULT FROM DUAL; RESULT ------------------------------ NULL SQL> SELECT REGEXP_COUNT( 'ab', '*' ) AS RESULT FROM DUAL; RESULT ---------- 3 < PostreSQL > 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
'IT > Regular Expression' 카테고리의 다른 글
[REGEX] :: POSIX BRE Meta Character '' 6. ( ) ( parenthesis ) '' (0) | 2019.07.16 |
---|---|
[REGEX] :: POSIX BRE Meta Character '' 5. \ ( back slash ) '' (0) | 2019.07.16 |
[REGEX] :: POSIX BRE Meta Character '' 3. . ( period ) '' (0) | 2019.07.02 |
[REGEX] :: POSIX BRE Meta Character '' 2. $ ( dollar ) '' (0) | 2019.06.07 |
[REGEX] :: POSIX BRE Meta Character '' 1. ^ ( caret ) '' (0) | 2019.06.07 |