위키백과를 보게 되면, 정규 표현식이란
특정한 규칙을 가진 문자열의 집합을 표현하는데
사용하는 형식 언어라고 정의하고 있습니다.
예 그렇습니다.
문자열 검색 및 치환을 위해 탁월한 규칙이라고 할까나?
많은 곳에 응용하여 사용할 수 있는
정규 표현식의 실제 식을 보시면
뭔가 보자마자 포기하고자 하는 마음이 생겨납니다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
어디 한번 보시고 포기할 마음이 드시는지 생각해보시죠.
자 어떤가요!?
모두 이런 표정이신가요...
하지만 정규 표현법에 익숙해지시면
금방 해독(?)하실 수 있을 것입니다.
힘을 냅시다~
(출처_ 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 중하나가 올 수 있다는 것이겠군요.
그 다음에 _(언더바) 오고~
또 ( )(소괄호)에 .(점)이 왔다는 것은!!!!
임의의 한 문자, 거기에 *(아스트리크)가 왔으니 여러 문자가 올 수 있다는 뜻입니다.
마지막으로' ]' 라는 녀석을 붙이기 위해 역슬래시를 사용했군요!
자... 여러분 어...렵..지 않죠..?
하하하....
자세한 패턴 구부자는 아래의 주소를 통해 확인하시길 바랍니다.
이렇게 친절 할 수가!!!
[참고_ 나무위키]
[참고_ 위키백과]
'삽질의 현장 > - ETC' 카테고리의 다른 글
[삽잡이::형상관리] 형상관리 시스템들에서 쓰이는 기능들! (0) | 2016.06.29 |
---|---|
[삽잡이::형상관리] 분산관리시스템(Distributed Version Control System) !? (0) | 2016.06.29 |
[삽잡이::android]설치하자 안드로이드 스튜디오 (0) | 2016.01.22 |
[삽잡이] 모듈(module) 이란? (0) | 2015.11.14 |
[삽잡이] 직렬화 (Serialization ) & 역직렬화 (UnSerialization) (0) | 2015.11.12 |