[다양한 언어로 배우는 정규표현식] 을 공부하며 정리해보았습니다.
정규식은 딱 세가지 연산으로 이루어져있다.
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_]* <= 접합, 선택, 반복연산을 다 썼다.
다음엔 조금더 응용하는걸로 간다.
해당 댓글은 삭제되었습니다.
정규표현식이 편하다고?