[다양한 언어로 배우는 정규표현식] 을 공부하며 정리해보았습니다.


정규식은 딱 세가지 연산으로 이루어져있다.


1. 접합

2. 선택

3. 반복


이 세가지를 조합해서 쓰는게 바로 정규식이다.

나머지 정규식에서 볼법한 다양한 기호들은 이 세가지 기본연산의 응용이나 축약형일뿐이다.


1. 접합

정규 표현식을 연결하는 연산을 "접합" 이라고 하며, 매우 자주 사용되기 때문에 연산자 기호가 없다.

RA = R이란 표현과 A란 표현이 접합되어있음.


2. 선택

연산자 | 기호를 사용한다.


선택은 둘중에 하나가 매칭되면 ok라는 연산이다.

abcd|ABCD 는

abcd로 접합된 표현 or ABCD로 접합된 표현 중 1개이다.


선택한 특수한 형태로 한 문자만 선택하는 경우, 문자클래스인 []를 사용해서 짧게 작성할 수 있다.

문자 a, b 둘중에 하나만 선택하는경우 [ab] 이렇게 해도되고

x,y,z중에 선택은 [xyz] [x-z] 이렇게도 가능하다.


접합과 선택으로 다양한 조합을 만들 수 있다.

((국립(강원|경상|경북|공주|군산|))?금오공과|목포)대학


() <= 이 표현은 괄호내의 패턴 혹은 아무것도 없는 패턴에 대한 일치를 묻는 것이고

? 패턴은 공백문자열과 선택이라는 의미와 동치이다. 예를들어서 r? 이면 (r|)과 같은의미이다. r을 선택하던지, 혹은 아무것도 선택하지않던지와 동치의의미이다.

국?립대 = 국립대 or 립대


따라서 위 패턴로 만들 수 있는것

국립강원대학

국립경상대학

국립경북대학

국립공주대학

국립군산대학

금오공과대학

목포대학

이다.


3. 반복


마지막으로 반복이다.

임의의 길이의 숫자를 반복한다는 뜻이다.

반복은 위 두가지 패턴을 응용한것뿐인데

접합을 사용해서 반복패턴을 여러번 쓸걸 축약해주는것이다.

예를들어서 abcd가 한번 이상 나오는걸 찾으려면...

(abcdabcd)|(abcdabcdabcd)|(abcdabcdabcdabcd)|.... 이렇게 찾아주면 된다.

(abcd)*

하지만 이걸 임의로 여러번 쓰는것보다 반복연산자를 한번 써주면, 쉽게 해결된다.



4. 연습


1. 첫글자는 알파멧 또는 언더바로 시작해야한다.

2.알파벳, 숫자, 언더바를 조합해서 만들 수 있는 문자열.


a|b|c|d|...|A|B|...|_ 보다는 선택연산을 축약시켜주는 []를 사용하자.

[a-zA-Z_] 를 사용한다.

뒤에는 문자열이라고 했으니, 위 조건을 만족하는게 임의로 여러번 등장할 수 있다.


[a-zA-Z_][a-zA-Z_]* <= 접합, 선택, 반복연산을 다 썼다.



다음엔 조금더 응용하는걸로 간다.