자택경비대

RE(IEEE Std 1003.2)와 BRE(Basic Regular Expression)

Programming

정규식

RE(Regulare Expression)은 한국어로 정규식이라고 불리며, POSIX.2 IEEE Std 1003.2에 정의되어 있다.

정규식은 atom이라는 주 단위를 사용하는데, 이는 다음과 같다.

()또는 [] 표현식, . (어떠한 한 글자), ^ (글자를 포함하지 않은 줄의 시작점), $ (글자를 포함하지 않은 줄의 끝 지점), \를 포함하는 ^.[$()|*+?{\ 문자, 0 부터 9 까지의 숫자를 포함하지 않은 { 문자, 혹은 다른 식별자를 포함하지 않는 문자.

문법

atom 뒤에 다음과 같은 식별자를 사용하여 표현할 수 있다.

*은 0 혹은, 그 이상의 문자와 일치하는것, +는 1 혹은 그 이상의 문자와 일치, 그리고 ?는 0 혹은 1 문자와 일치하는지를 나타낸다.

범위

{로 시작하여 정수형 숫자를 포함하고, 이후 , 가 사용될 수 있고, 다시 정수형 숫자를 포함할 수 있고, }로 끝나는 표현을 의미한다.

만약 두 숫자가 사용되었다면 , 이전의 값은 , 이후의 값을 넘어갈 수 없다.

, 없이 한 숫자만 사용되었으며 바로 }문자로 닫힌 표현식은 정확히 그 숫자의 갯수만큼이 일치함을 나타낸다.

, 뒤에 어떠한 숫자가 없이 }문자로 닫힌 표현식은 , 이전의 숫자를 i로 정의하고, , 이후의 숫자를 j로 정의할 경우, i부터 j까지의 범위의 어떠한 경우에 일치함을 나타낸다.

Bracket expression

[]로 둘러싸인 표현식을 의미하며, 일반적으로 [] 사이의 나열된 문자열에 일치함을 뜻한다. 만약 첫 글자가 ^로 시작한다면, []사이의 나열된 문자열에 불일치함을 뜻한다.

만약, 두 글자 사이에 - 문자가 사용되었다면, 그것은 두 문자 사이의 ASCII 범위를 포함하는것을 뜻하게 된다.

[::]로 둘러싸인 표현식은 사이에 character class의 이름을 사용하여 미리 정의된 범위의 문자열을 나타낼 수 있다.

character class의 내용들은 C 에서 사용되는 ctype.h의 character classification 정의들과 같다.

     
alnum digit punct
alpha graph space
blank lower upper
cntrl print xdigit

[:class:] 또한 [^로 시작되는 반대되는 개념의 일치에도 사용될 수 있다. 따라서 [^[:class:]]는 해당 character class에 포함되지 않는 문자열의 집합을 의미하게 된다.

단어의 범위를 나타내는 특별한 [[:<:]], [[:>:]] 표현식도 있다. 각각 단어의 시작, 끝부분을 나타내게 된다.

예제는 다음과 같다.

# With out bracket expression
echo 'this is island' | sed 's/is/foo/g'

thfoo foo fooland


# With bracket expression
echo 'this is island' | sed 's/[[:<:]]is[[:>:]]/foo/g'

this foo island

비식별자로서의 특수문자

문자 ]를 리스트, 즉 []에서 사용하기 위해선, 가장 처음의 문자로 두거나, 첫 문자 ^ 뒤에 바로 두면 된다.

문자 -를 리스트내에서 사용하려면, ]와 마찬가지로 가장 처음의 위치에 두거나, 가장 마지막 자리에 두면 된다.

이외에 다른 특수문자를 사용하고 싶다면 백 슬래시 \를 앞에 함께 사용하여 식별자로서의 기능을 잃게 할 수 있다.

Basic Regulare Expresion

BRE또는 Obsolete RE 라고도 불리며 현재는 대부분 하위호환성을 유지하기 위해 존재한다.

BRE에서는 +, |, ?가 일반문자로 사용된다.

향상된 정규식

perl이나 python등에서 사용되는 기능이 추가된 정규식을 뜻한다.

  • \<: 글자를 포함하지 않는 단어의 시작부분을 뜻한다. [[:<:]]와 동일하다.
  • \>: 글자를 포함하지 않는 단어의 끝부분을 뜻한다. [[:>:]]와 동일하다.
  • \b: \<\> 두가지 모두의 의미를 포함한다.
  • \B: \b와 반대되는 표현이다.

아래와 같은 줄임표현도 있다.

  • \d: [[:digit:]]과 같은 표현이다.
  • \D: \d와 반대되는 표현이다.
  • \s: [[:space:]]와 같은 표현이다.
  • \S: \s와 반대되는 표현이다.
  • \w: [[:alnum:]_]과 같은 표현이다.
  • \W: \w와 반대되는 표현이다.

자바스크립트 모듈 개념정리 (AMD, CJS, ESM, UMD)

Programming

AMD

Ansynchronous Module Deifinition

  • 모듈을 비동기적으로 불러옴
  • Front-End 용으로 개발되었음

CJS

Common JS

  • Node.js의 모듈 시스템에 사용됨
  • 모듈을 동기적으로 불러옴
  • Back-End 용으로 개발되었음

ESM

ES Modules

  • 표준 자바스크립트 모듈 시스템으로 기획되었음
  • 최신 브라우저에서 대부분 지원
  • 이전의 모듈 시스템들의 장점들을 채택; CJS의 문법을 차용, AMD의 비동기 로드를 가져옴.
  • Tree-shaking 이 가능하다 (크기최적화 가능)

UMD

Universal Module Definition

  • AMD, CJS 같은 개념과는 다르게, 여러 모듈 시스템을 동작 가능하게 하는 패턴에 가깝다.
  • Front-End, Back-End 양쪽에서 사용가능.
  • Webpack이나 rollup 같은 Bundler의 fallback으로 많이 사용된다.

IOW 뜻

Programming/vernacular

in other words 의 줄임말이다.

'Programming > vernacular' 카테고리의 다른 글

Ex nihilo  (0) 2020.05.16