'IT/Regular Expression'에 해당되는 글 12건

Meta Characters

  • 12가지 메타 문자들의 정의 및 스펙을 기술 ( 소괄호 닫기는 소괄호와 같이 묶었기 때문에 항목은 11개 )
  • BRE의 메타문자, ERE에서 추가된 메타문자 순서로 작성
  • 항목별로 구문( Syntax )설명( Description )예제( Examples )
  • 예제는 Oracle DBMS 18c 버전 기준 REGEXP_SUBSTR() 함수를 사용,
    PostgreSQL, MariaDB, MySQL 에서의 Test와 결과가 다른 것은 명시하였음


'매칭한다 ( Matching )'

str을 매칭한다고 함은, 일치한다가 아니라 source string '안'에 해당 패턴이 '포함'됨을 의미한다.
( When I say a regex "matches" a string, I really mean that it matches in a string. )
즉,

'a' match 'cat' X
'a' match in 'cat' O

( Technically, the regex 'a' doesn't match cat, but matches the 'a' in cat. )
혼동에 주의하자!




POSIX BRE( Basic Regular Expression )

  1. ^
  2. $
  3. .
  4. *
  5. \
  6. (
  7. {
  8. [



1. ^ ( Caret )

구문 ( Syntax )

<caret> ::= ^
  • 사용 예
    <caret>
    
    <caret><pattern_expr>
    
    <pattern_expr><caret>
    
    <pattern_expr><caret><pattern_expr>
    

설명 ( Description )

  • source string의 시작을 의미한다.
  • 일반적으로 <caret> 뒤에 <pattern_expr>을 입력하여 사용한다.
    • ex) ^abc
  • <caret> 만 있는 경우, source string의 맨 앞을 매칭한다. ( zero-length match )
    • ex) ^
  • <caret> 앞에 <pattern_expr>이 있는 경우, 어떤 source string과도 매칭하지 않는다.
    • ex) a^
    • 예외
      • ex) a*^bc <=> ^bc
      • ex) a*^ <=> ^


별다른 옵션이 없다면 source string의 시작지점을 매칭하지만, 

multiline mode 옵션이 주어지면 source string의 각 라인 시작지점들을 매칭한다. ( 이 경우, 라인의 기준은 ASCII(10)인 Line Feed(\n)이다. )


예제 ( Examples )

SQL> SELECT REGEXP_SUBSTR( 'abc', '^' ) AS RESULT FROM DUAL;

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

SQL> SELECT REGEXP_COUNT( 'abc', '^' ) AS RESULT FROM DUAL;

    RESULT
----------
         1

SQL> SELECT REGEXP_SUBSTR( 'abc', 'a^' ) AS RESULT FROM DUAL;

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

SQL> SELECT REGEXP_COUNT( 'abc', 'a^' ) AS RESULT FROM DUAL;

    RESULT
----------
         0

SQL> SELECT REGEXP_SUBSTR( 'abc', 'a*^.' ) AS RESULT FROM DUAL;

RESULT
--------------------
a

SQL> SELECT REGEXP_SUBSTR( 'abc', '^a' ) AS RESULT FROM DUAL;

RESULT
--------------------
a

SQL> SELECT REGEXP_SUBSTR( 'abc', '^(.*)' ) AS RESULT FROM DUAL;

RESULT
--------------------
abc

SQL> SELECT REGEXP_SUBSTR( 'abc'||CHR(10)||'def', '^.' ) AS RESULT FROM DUAL;

RESULT
--------------------
a

SQL> SELECT REGEXP_COUNT( 'abc'||CHR(10)||'def', '^.' ) AS RESULT FROM DUAL;

    RESULT
----------
         1

SQL> SELECT REGEXP_SUBSTR( 'abc'||CHR(10)||'def', '^.', 1, 1, 'm' ) AS RESULT FROM DUAL;

RESULT
--------------------
a

SQL> SELECT REGEXP_SUBSTR( 'abc'||CHR(10)||'def', '^.', 1, 2, 'm' ) AS RESULT FROM DUAL;

RESULT
--------------------
d

SQL> SELECT REGEXP_COUNT( 'abc'||CHR(10)||'def', '^', 1, 'm' ) AS RESULT FROM DUAL;

    RESULT
----------
         2


블로그 이미지

차트

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

,

REGULAR EXPRESSION ( 정규 표현식 )


Basic Concepts

What is Regular Expression?

정규 표현식이란, 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다.

  • 즉 쉽게 말해 문자열을 다루는 하나의 언어이다.

주로 Programming Language나 Text Editor 등에서
특정 문자열의 검색, 치환 등의 처리를 위한 용도로 사용된다.


How to Express

정규 표현식은 언어마다 문법이 다르기 때문에, 표준을 먼저 정의할 필요가 있다.
크게 나누면 표준인 POSIX의 BRE와 ERE가 있고, 여기서 문법을 확장한 Perl 호환 정규 표현식으로 나뉜다.

  • 표준
    • POSIX1) 기반의
      • 기본 정규 표현식( BRE : Basic Regular Expression )
      • 확장 정규 표현식( ERE : Extended Regular Expression )
  • 비표준
    • Perl 호환 정규 표현식


1) POSIX란?

이식 가능 운영 체제 인터페이스( Portable Operating System Interface )의 약자로,
서로 다른 UNIX OS의 공통 API를 정리해 이식성이 높은 유닉스 응용 프로그램을 개발하기 위해
IEEE가 책정한 애플리케이션 인터페이스 규격이다.




이러한 정규 표현식에서 사용하는 기호들을 메타문자( Meta Character )라 한다.
메타문자는 표현식 내에서 특정한 의미를 갖는 문자를 일컫는다.
BRE 및 ERE의 메타문자 12개 존재한다.


no.POSIX BRE syntaxadded POSIX ERE syntax
1.^
2.$
3..
4.*
5.\
6.(
7.)
8.{
9.[
10.+
11.?
12.|

  • 종료 대괄호 ]나 하이픈 -은 대괄호 [ 뒤에 올 경우에만 메타문자로 인식한다.
  • 종료 중괄호 }는 { 뒤에 올 경우에만 메타문자로 인식한다.
  • 반면 소괄호 )는 대괄호, 중괄호와 달리 메타문자로 인식하는데,
    소괄호는 무조건 ()가 쌍으로 존재하지 않으면 에러처리하기 때문에
    메타문자로 다룬다.
  • 이러한 메타문자들 앞에 백슬래시 \를 사용하면 일반 문자로 인식할 수 있다.


블로그 이미지

차트

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

,