정규식에 대해서 알아보자
정규식으로 큰범위로 보자면 정적정규식과 동적정규식으로 나뉠 수 있다.
실제로 정적 정규식 같은 경우 입력한 문자와 일치하는 글자를 찾아내는 방식이기 때문에 어렵지 않으나, 동적 정규식같은 경우 정규표현식을 익혀야 능수능란하게 사용할 수 있다.
또한 정규식을 앎으로써, 컴퓨터 시스템에 존재하는 파일 목록에서 보고싶은 파일들만 걸러내거나, 소스코드를 수정하다가 특정문자를 다른문자로 대체하고 싶을 때, 파일 특정위치에서 원하는 텍스트를 찾고 싶을 때 등등 컴퓨터 수행시 발생되는 상황에서 이러한 상황을 해결할 수 있기 때문에 배워두는 편이 좋다.
정규식 예제를 통해 정규식표현식을 설명하도록 하겠다.
1. 정규식 표현 종류 ( 메타문자 )
1) ^ 괄호안의 형식을 제외한다는 의미 혹은 텍스트 시작을 의미
ㄱ. [^0-9] : [0-9]의 의미는 0~9 중 하나의 숫자가 해당 범위 안에 포함된다는 의미인데 이 [] 안에 ^가 들어가게되면 0~9를 제외한 나머지 메타문자들을 의미한다.
ㄴ. ^[0-9] : [] 앞에 ^가 붙는 다면 텍스트의 시작을 의미하게 된다.
2) $ : 문자열의 끝을 의미한다.
ㄱ. b$ : 반드시 b로 끝나는 문자를 의미한다.
3) \ : 메타문자를 표현하기위한 명령
ㄱ. ab\.com : 정규식에서는 +, . , ? 등등 우리가 일반적으로 쓰는 표현들의 각각 의미를 가지고 있다. 하지만 실제 찾고자하는 텍스트 파일에서 +. ? 등등 이러한 고유의 문자를 찾고 싶을 때는 어떻게 해야할까? 바로 그떄 도와주는 것이 \ 이다.
왼쪽 예제로 설명하자면 ab\.com은 ab.com을 찾기위한 정규식 표현인 것이다.
4) . : 임의의 한문자
ㄱ. a.b : a와 b사이에 임의의 한 문자가 들어간다. 예를 들자면 abc, adb, aFb 등등을 참고하면 된다.
5) * : 없거나 하나이상의 문자
ㄱ. a*b : 하나이상의 문자를 의미한다. 4번과 같은 예제로 설명하겠다. .같은 경우 abb, adb 한글자만 들어갈 수 있지만 b,ab,abbbbb adbbbb 등 a가 없거나 하나 이상의문자가 들어 갈 수 있다.
6) + : 앞에 문자가 하나 이상 반복
ㄱ. a+b : 앞에 문자가 하나 이상반복되어야 하기때문에 현재 왼쪽 예제와 같이 a가 하나이상 반복됨을 뜻한다 (ex.aaaaaab)
7) {} : 숫자에 따른 반복갯수
ㄱ. ab{3} : ab라는 문자가 3번 반복됨을 의미한다. (ex: ababab)
8) | : 또는
ㄱ. a|b|c : a 또는 b 또는 c 가 일치함을 알 수 있음을 의미한다.
9) () : 하나의 묶음
ㄱ. (1|3) : 1 또는 3을 일치함을 알 수 있음을 의미한다 ( 묶어주는 역활 뿐인듯 )
10) [] : 괄호 안에 형식 일치
ㄱ. [ab] : 괄호 안에 a , b , ab 이 3가지 형식이 다 일치함을 뜻한다.
(위에서 [a-z], [0-9]의 예제를 설명했는데 -는 ~로 생각하면 될 것같다. [] 자체의 의미가 범위를 나타내는 것은 아니므로 오해하지 말길 바란다. )
2. 정규식 표현 종류 ( 이스케이프 )
1) \d : [0-9] 와 같은 의미이다 ( 0~9 까지 )
2) \D : 숫자([^0-9]) 를 제외한 문자 하나
3) \s :
'컴퓨터 공부 > JAVA' 카테고리의 다른 글
JAVA Collection F/W 1탄 ( 정의 및 종류 ) (0) | 2014.10.14 |
---|---|
[JAVA] arrayList와 linkedList 차이점 (2) | 2013.03.15 |
[JAVA] compareTo, equal, == 의 차이점 (5) | 2013.02.08 |
Vector-벡터 (0) | 2012.04.05 |
[기타]data/heap/stack/메모리 구조 (2) | 2012.03.30 |