정규표현식 이란?
정규표현식이란 간단하게 이야기해서 검색에서 사용할 매칭되는 같은 문자들의 패턴을 뜻합니다.
또한 정규표현식은 모든 언어(jsp,php,asp,javascript,perl 등등)에서 사용이 되며, 사용법에는 큰 차이는 없습니다.
우선 Shell Script 에서 사용되는 정규표현식에 대하여 알아보겠습니다.
정규표현식에서는 문자 그대로의 의미 이상으로 해석되는 메타문자 라고 부르는 문자들의 집합을 사용합니다.
연산자 |
내용 |
. |
newline을 제외한 오직 하나의 문자와 일치합니다. (예 : "1..e" 정규표현식은 1을 포함하고 두개의 문자 다음에 e가 나오는 라인을 의미합니다. |
? |
자신 앞에 나오는 정규표현식이 0개 이거나 1개인 것과 일치하고 대부분 하나의 문자와 매칭할 때 사용합니다. |
* |
바로 앞의 문자열이나 정규표현식에서 0개 이상 반복되는 문자를 의미합니다. |
+ |
자신 앞에 나오는 하나 이상의 정규표현식과 일치합니다. * 와 비슷하게 동작하지만 반드시 하나 이상과 일치합니다. |
{N} |
정확히 N번 일치 합니다. |
{N,} |
N번 또는 그 이상 일치합니다. |
{N,M} |
적어도 N번 일치하지만 M번 일치를 넘지 않습니다. |
- |
목록에서 처음과 마지막을 제외한 범위를 의미하거나 목로의 마지막 지점을 의미합닏. |
^ |
라인의 시작에서의 공백 문자열을 의미합니다. 또한 목록의 범위에 없는 문자들을 의미합니다. (예: ^linux 는 linux 문자열로 시작하는 모든 라인을 의미합니다.) |
$ |
라인 마지막에서의 공백 문자열을 의미합니다. (예 : linux$ 는 linux 로 끝나는 모든 라인을 의미합니다.) |
^$ |
빈 줄과 일치합니다. |
[…] |
대괄호는 단일 정규표현식에서 문자들을 집합으로 묶어줍니다. 예: [xyz] : x, y, z 중 한 문자와 일치합니다. [c-n] : c에서 n 사이에 속하는 한 문자와 일치합니다. [B-Pk-y] : B에서 P까지 또는 k에서 y까지의 한 글자와 일치합니다. [a-z0-9] : 소문자나 숫자 중 한 문자와 일치합니다. [^b-d] : b 에서 d 사이의 문자를 제외한 모든 문자를 나타냅니다. 또한 ^ 는 바로 뒤에 나오는 정규표현식의 의미를 반대로 해석하도록 합니다. |
\ |
특수문자를 원래의 문자 의미대로 해석합니다. 예 : \$ : $ 문자 그대로 해석합니다. |
\b |
단어 끝의 공백 문자열을 의미합니다. |
\B |
단어 끝이 아닌 곳에서의 공백 문자열을 의미합니다. |
\< |
단어 시작에서의 공백 문자열을 의미합니다. 예 : \<linux : linux 문자열로 시작되는 단어를 포함하고 있는 라인 |
\> |
단어 끝에서의 공백 문자열을 의미합니다. 예 : linux \> : linux 문자열로 끝나는 단어를 포함하고 있는 라인 |
아래의 내용은 정규표현식에서 사용하는 확장된 메타문자(브래킷) 입니다.
브래킷 |
내용 | |
[:alnum:] |
[A-Za-z0-9] 처럼 알파멧 문자와 숫자로 이루어진 문자열 입니다. | |
[:alpha:] |
[A-Za-z] 과 동일한 알파벳 문자를 의미합니다. | |
[:blank:] |
[ \x09] 스페이스와 탭을 의미합니다. | |
[:cntrl:] |
컨트롤 제어 문자를 의미합니다. | |
[:digit:] |
[0-9] 숫자를 의미합니다. | |
[:graph:] |
[!-~] 공백이 아닌 문자를 의미합니다.(스페이스, 제어문자들은 제외) | |
[:lower:] |
[a-z] 소문자 | |
[:print:] |
[ -~] [:graph:]와 비슷하지만 스페이스 문자를 포함합니다. | |
[:punct:] |
[!-\:-@[-'{-~] 문장 부호 문자 | |
[:space:] |
[ \t\v\f] 모든 공백 문자(newline 줄바꿈, 스페이스, 탭) | |
[:upper:] |
[A-Z] 대문자 | |
[:xdigit:] |
[0-9a-fA-F] 16진수에서 사용할 수 있는 숫자 |
예제)
'시스템 > Shell Script' 카테고리의 다른 글
date 명령어로 날짜,시간 계산하기 (0) | 2013.05.23 |
---|