[REGEX] :: POSIX BRE Meta Character '' 5. \ ( back slash ) ''
IT/Regular Expression 2019. 7. 16. 10:25POSIX BRE( Basic Regular Expression )
- ^
- $
- .
- *
- \
- (
- {
- [
5. \ ( Back Slash )
구문 ( Syntax )
<back_slash> ::= \
- 사용 예
<back_slash><meta_char> <meta_char> ::= ^ | $ | . | * | + | ? | | | \ | ( | ) | { | [
설명 ( Description )
- <back_slash> 뒤의 <meta_char>가 문자 그대로임을 의미한다. ( 이스케이프 처리 )
- ex) \^
- <back_slash>만 있는 경우
- ex) \
- 결과
- Oracle : zero-length match
- PostgreSQL, MySQL, MariaDB : error 처리
- <back_slash> 뒤에 <meta_char>가 아닌 일반 문자가 있는 경우, 아무런 효과 없이 그 문자만을 매칭한다.
- ex) \j
- <back_slash> 뒤에 숫자가 올 수 없다.
- ex) \1
MariaDB와 MySQL에서는 두 개( \\ )를 사용한다.
문자마다 매번 \를 사용하면 알아보기가 힘들어지기 때문에,
Perl, JAVA는 '\Q'와 '\E'를 사용해 이스케이프처리를 한 번에 할 수 있다.
예제 ( Examples )
SQL> SELECT REGEXP_SUBSTR( '$999', '\$999' ) AS RESULT FROM DUAL; RESULT -------------------- $999 SQL> SELECT REGEXP_SUBSTR( 'Hi ^^', 'Hi \^\^' ) AS RESULT FROM DUAL; RESULT -------------------- Hi ^^ SQL> SELECT REGEXP_SUBSTR( 'Mr.Kim', 'Mr\.Kim' ) AS RESULT FROM DUAL; RESULT -------------------- Mr.Kim SQL> SELECT REGEXP_SUBSTR( '\n means ''new line''', '\\.*' ) AS RESULT FROM DUAL; RESULT -------------------- \n means 'new line'
- <back_slash>만 있는 경우
< Oracle > SQL> SELECT REGEXP_SUBSTR( 'SUNJE', '\' ) AS RESULT FROM DUAL; RESULT -------------------- NULL SQL> SELECT REGEXP_COUNT( 'SUNJE', '\' ) AS RESULT FROM DUAL; RESULT ---------- 6 < PostgreSQL > postgres=# SELECT REGEXP_MATCHES( 'SUNJE', '\', 'g' ) AS RESULT; ERROR: invalid regular expression: invalid escape \ sequence < MySQL > mysql> SELECT REGEXP_SUBSTR( 'SUNJE', '\\' ) AS RESULT; ERROR 3689 (HY000): Unrecognized escape sequence in regular expression. < MariaDB > MariaDB [test]> SELECT REGEXP_SUBSTR( 'SUNJE', '\\' ) AS RESULT; ERROR 1139 (42000): Got error '\ at end of pattern at offset 1' from regexp
- <back_slash> 뒤에 일반 문자가 있는 경우
SQL> SELECT REGEXP_SUBSTR( 'yo', '\yo' ) AS RESULT FROM DUAL; RESULT ------------------------------ yo SQL> SELECT REGEXP_SUBSTR( 'abc', '\a\b\c' ) AS RESULT FROM DUAL; RESULT -------------------- abc
- <back_slash> 뒤에 숫자가 있는 경우
SQL> SELECT REGEXP_SUBSTR( '123', '\123' ) AS RESULT FROM DUAL; SELECT REGEXP_SUBSTR( '123', '\123' ) AS RESULT FROM DUAL * ERROR at line 1: ORA-12727: invalid back reference in regular expression 이스케이프 뒤의 숫자는 허용하지 않는다.
'IT > Regular Expression' 카테고리의 다른 글
[REGEX] :: POSIX BRE Meta Character '' 7. { } ( brace ) '' (0) | 2019.08.28 |
---|---|
[REGEX] :: POSIX BRE Meta Character '' 6. ( ) ( parenthesis ) '' (0) | 2019.07.16 |
[REGEX] :: POSIX BRE Meta Character '' 4. * ( asterisk ) '' (0) | 2019.07.02 |
[REGEX] :: POSIX BRE Meta Character '' 3. . ( period ) '' (0) | 2019.07.02 |
[REGEX] :: POSIX BRE Meta Character '' 2. $ ( dollar ) '' (0) | 2019.06.07 |