삽질의 현장/- ETC

[삽잡이::정규표현식]정규표현식(Regular Expression)에 대해서 알아보자

shovelman 2016. 6. 15. 22:59



위키백과를 보게 되면, 정규 표현식이란

특정한 규칙을 가진 문자열의 집합을 표현하는데 

사용하는 형식 언어라고 정의하고 있습니다.


예 그렇습니다.

문자열 검색 및 치환을 위해 탁월한 규칙이라고 할까나?


많은 곳에 응용하여 사용할 수 있는 

정규 표현식의 실제 식을 보시면

뭔가 보자마자 포기하고자 하는 마음이 생겨납니다.


ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


어디 한번 보시고 포기할 마음이 드시는지 생각해보시죠.




자 어떤가요!?



모두 이런 표정이신가요...


하지만 정규 표현법에 익숙해지시면 

금방 해독(?)하실 수 있을 것입니다.


힘을 냅시다~ 



(출처_ REGEXPER)


요 사이트에 들어가면 

이쁘게 그림으로 정규 표현법에 대해 보여주니 

참고하실분은 하시길... 



정규식은 /와 /사이에 묶여 표현이 됩니다.



우선, 정규표현식을 사용하며

 시작문자를 매칭시키는 표현식은 ^로 표현할 수 있고,

 끝문자를 매칭시키는 표현식은 $로 표현할 수 있습니다.





보이시죠?


이외에 여러 문자들이 존재합니다.

이를 메타 문자라고 하는데요 

정규 표현식 내부에서 특정 의미를 가지고 있는 문자들을 말합니다.


그리고 .(점)은 임의의 한 문자를 표현할 때 사용합니다.

*(아스트리크)앞에 붙은 문자가 0개 이상 포함할 수 있다는 뜻입니다.

또한, +(더하기)가 뒤에 붙으면 해당 문자가 1개 이상 포함될 수 있다는 뜻입니다.


이렇게 { }(중괄호)가 붙게되면, 앞에문자를 반복하게 됩니다.

즉, '삽삽삽'이 되겠지요.


비슷한 괄호인 [ ](대괄호)가 붙게 되면,

대괄호 내부에 해당하는 문자열의 범위 중에 하나만 선택하겠다는 뜻으로 이해하시면 됩니다.


예를 들어 [A-Z] 이런식으로 정규 표현식을 사용하게 된다면



이처럼 A부터 Z까지의 문자중에 해당되는 문자만이 허용되겠지요.



( )(소괄호)는 서브 패턴의 형태로 

여러 식을 하나로 묶어줄 때 사용한다고 합니다.


문자 그대로 예전에 수학식 볼 때

(1+2) * (3+4) 이와 같은 식에서는

(1+2), (3+4) 이렇게 괄호로 묶여있는 것들을 

우선적으로 연산하는 것과 같은 느낌이랄까?



이 외에도 코드를 작성해보시거나 하면 

대충 감 잡으실 수 있는 여러 표현식들이 존재합니다.


예를 들어 | , ^,  \t 등등 말입니다!

또한 특수문자 자체를 사용하기 위한 escape 문자인 \(역슬래시)도 빼놓을 수 없지요



자.. 그러면 아까 포기할 뻔한 

위대한 예제 다시한번 끌고 와 볼까요!?





후훗~ 이제 난 너가 두렵지 않아!


자 한번 씹어봅시다!


아! 그리고 한가지 언급안한 것이 있는데,

/는 패턴 구분자로 의미가 통합니다.

즉, 정규식의 패턴을 시작할 때 관용적으로 붙이는 것인데요 참고하시길~


아무튼...

SAP이라는 문자로 시작해서 _(언더바)가 그 다음에 왔군요...


자 이제부터 시작입니다!


오! [0-9]라는 의미는 0부터 9까지 중에 숫자들이 올 수 있고~

뒤에 +(더하기)가 왔으니! 숫자가 한개 이상 이라는 뜻이구요!

그 뒤에  (A|B|C|D) 를 보게 되면 

( )(소괄호) 안에 식들이 있는 것을 보아하니

서브 패턴 같은데 A 또는 B 또는 C 또는 D 중하나가 올 수 있다는 것이겠군요.


그 다음에 _(언더바) 오고~

( )(소괄호)에 .(점)이 왔다는 것은!!!!

임의의 한 문자, 거기에 *(아스트리크)가 왔으니 여러 문자가 올 수 있다는 뜻입니다.


마지막으로' ]' 라는 녀석을 붙이기 위해 역슬래시를 사용했군요!


자... 여러분 어...렵..지 않죠..? 

하하하.... 


자세한 패턴 구부자는 아래의 주소를 통해 확인하시길 바랍니다.


이렇게 친절 할 수가!!!


[참고_ 나무위키]

[참고_ 위키백과]