정규표현식 - Assertion



page 25 - ?= Assertion



Assertion은 검증이나 확인의 의미이다.


Case 1

?=는 검색할때 쓰지만 선택은 하지 않는다는 뜻이다.

따라서 X앞에 3개의 단어를 선택하지만 X는 선택하지 않겠다는 뜻이다


Case 2

특수문자, 숫자를 제외하고 선택한다.


Case 3

문자가 마지막에 있는 문자열을 마지막 문자를 제외하고 선택한다.  

신고

'프로그래밍 > 정규표현식' 카테고리의 다른 글

[정규 표현식] Assertion  (0) 2017.04.18
[정규 표현식] Character Class  (0) 2017.04.18
[정규 표현식] 수량자 -2  (0) 2017.04.18
[정규 표현식] 수량자 - 1  (0) 2017.04.18
[정규 표현식] SUBPATTERN  (0) 2017.04.18
[정규 표현식] 특정 문자  (0) 2017.04.18

정규표현식 - Character Class




Page 18 - \w word




일부 문자는 이스케이프 문자와 결합하여 새로운 기능이 생긴다

\w는 word를 뜻하며 문자를 선택하게 된다. 

대문자를 사용하는 경우 의미가 달라지므로 유의한다.






Page 19 - \w not word




\W는 문자가 아닌 것들을 선택한다

not word의 의미를 가지고 있다.







Page 20 - \s space




\s 는 공백을 선택한다 

\S는 공백이 아닌 모든 문자를 선택한다.






Page 21 - \d digit, \D not digit




\d는 digit로, 숫자를 선택한다

\D는 숫자가 아닌 문자를 선택한다.





Page 22 - \b boundary




\b는 경계값을 선택한다.

문자 앞에서 쓰이면 앞쪽 경계값, 뒤쪽에서 쓰이면 뒤쪽 경계값을 선택한다.







Page 23 - \b not boundary


 


\B는 경계값이 아닌 문자를 선택한다. 

\B가 앞쪽에 쓰이면 앞쪽 경계값을 제외한 문자를, 

뒤쪽에 쓰이면 뒤쪽 경계값을 제외한 문자를 선택한다.






Page 24 - \A, \Z




\A 시작점을 나타내며 ^와 기능이 같다 

\Z 끝점을 나타내며 $와 기능이 같다


^, $와 차이점은 \A,\Z는 멀티라인(개행)에서 동작하지 않는다는 점이다.



신고

'프로그래밍 > 정규표현식' 카테고리의 다른 글

[정규 표현식] Assertion  (0) 2017.04.18
[정규 표현식] Character Class  (0) 2017.04.18
[정규 표현식] 수량자 -2  (0) 2017.04.18
[정규 표현식] 수량자 - 1  (0) 2017.04.18
[정규 표현식] SUBPATTERN  (0) 2017.04.18
[정규 표현식] 특정 문자  (0) 2017.04.18

정규표현식 - 수량자-2





Page 15 - { } 원하는 값의 수량을 정확하게 지정함




Case 1

.{5} 5개의 문자를 선택. 

All matches의 경우 마지막이 5개가 되지않으므로 남는것을 반환


Case 2

[els] e, l, s가 1개 이상, 3개 미만인 값을 선택


Case 3

[a-z]{3,} a에서 z까지 3개 이상인 문자를 선택







Page 16 - { }를 이용하여 *,+,? 와 동일한 기능을 사용하는 방법






Case 1 - Case 2, Case 3 - Case 4, Case 5 - Case 6이 동일한 결과이다.







Page 17 - ?가 수량자(*, +, ?)와 만났을때 기능이 바뀐다


 

Case 1 -  Case 2

* 는 0개에서 여러개를 지정하는 수량자이다.

*와 ?가 결합하면 *는 0개를 지정하는 수량자로 기능이 바뀐다.


Case 3 -  Case 4

+ 는 1개에서 여러개를 지정하는 수량자이다.

+와 ?가 결합하면 +는 1개를 지정하는 수량자로 기능이 바뀐다.


Case 5 -  Case 6

? 는 1개에서 여러개를 지정하는 수량자이다.

?와 ?가 결합하면 ?는 0개를 지정하는 수량자로 기능이 바뀐다.

 





?로 수량자의 기능을 변경하는 이유


: ?로 수량자의 기능을 변경하지 않는 경우 

전체가 선택되어 greedy quantifier로 동작하므로 원하는 값을 얻을수 없다. 

그러나 ? 로 기능을 변경할 경우 분할이 되므로 lazy quantifier 로 동작한다.  

따라서 원하는 값을 얻기위해 수량자의 기능을 변경한다.


Greedy quantifier




lazy quantifier




신고

'프로그래밍 > 정규표현식' 카테고리의 다른 글

[정규 표현식] Assertion  (0) 2017.04.18
[정규 표현식] Character Class  (0) 2017.04.18
[정규 표현식] 수량자 -2  (0) 2017.04.18
[정규 표현식] 수량자 - 1  (0) 2017.04.18
[정규 표현식] SUBPATTERN  (0) 2017.04.18
[정규 표현식] 특정 문자  (0) 2017.04.18

정규표현식 - 수량자-1




Page 11 - 수량자(*, +, ?)의 기본 사용 방법




수량자 : 패턴이 얼마나 등장하는가에 대해 표현함(*,+,? 등이 정규표현식에서의 수량자)


Case 1

* 는 *앞에 위치한 문자가 0개에서 여러개 까지 나오는 것을 제약함.

a*b에서 a는 0개에서 여러개 까지 등장할수 있으며 b는 1개가 나와야한다.

따라서 기준점은 *뒤에 나오는 문자(b)로 잡는것이 편하다.


Case 2

+ 는 +앞에 위치한 문자가 1개에서 여러개 까지 나오는 것을 제약함. 

0개는 취급하지 않는다

a+b에서 a는 1개에서 여러개 까지 등장할수 있으며 b는 1개가 나와야한다.


Case 3

? 는 ?앞에 위치한 문자가 0개에서 1개 까지 나오는 것을 제약함.

a?b에서 a는 1개에서 0개 까지 등장할수 있으며 b는 1개가 나와야한다.







Page 12 - *가 다른 문자와 결합했을 때




Case 1

.* 는 모든 문자를 선택하게된다.


Case 2

-A*- 에서 앞의 - 과 뒤의 -는 반드시 들어가야하며 A는 0개에서 여러개 들어가는 문자를 찾는다


Case 3

[-@]* -나 @ 가 0개에서 여러개인 문자를 찾는다





Page 13 - +가 다른 문자와 결합했을 




Case 1

*문자가 1개 이상이면 선택


Case 2

@가 1개 이상이고 앞뒤에 -가 존재 해야 선택


Case 3

공백이 아니고 문자인 경우 선택(공백을 제외한 문자를 선택)






Page 14 - ?가 다른 문자와 결합했을 




Case 1

-X?XX?X -와 X 두개는 반드시 있어야 하며 가운데 X가 없거나 2개까지 있을수 있음(?로 지정된 X가 2개 이므로)


Case 2

-@?@?@?- 앞뒤의 -가 반드시 있어야하며 @가 없거나 3개까지 있을수 있음(?로 지정된  X가 3개 이므로)


Case 3

[^@]@?@ 맨 처음 문자가 @가 아니며 가운데는 @가 없거나 1개까지 있을수 있음. 마지막은 @가 만드시 있어야함.



신고

'프로그래밍 > 정규표현식' 카테고리의 다른 글

[정규 표현식] Character Class  (0) 2017.04.18
[정규 표현식] 수량자 -2  (0) 2017.04.18
[정규 표현식] 수량자 - 1  (0) 2017.04.18
[정규 표현식] SUBPATTERN  (0) 2017.04.18
[정규 표현식] 특정 문자  (0) 2017.04.18
[정규 표현식] 모든 문자  (0) 2017.04.18

정규표현식 - SUBPATTERN




Page 10 - subpattern ( )




 | (파이프 라인 문자) - 보통 프로그래밍 문법에서의 or과 동일하다

) subpattern - ( ) ~안에 들어가있는 문자를 찾는다. 

보통 파이프 라인과 함께 사용하며 [ ]의 문자열 확장버전이라고 생각하면 된다.


Case 1

on, ues, rida 중 하나를 찾는다


Case 2

앞쪽이 Mon, Tues, Fri중 하나에 해당하고 뒤쪽이 day로 끝나는 문자를 찾는다.


Case 3

앞에 문자가 2개이며 id, esd, nd가 중간에 있고 ay로 끝나는 문자를 찾는다.

신고

정규표현식 - 특정 문자





page 7 - [ ] 의 쓰임




[ ] 은 정규표현식에서 후보군을 지정할때 사용한다. 


Case 1

[~] 는 ~ 중에서 1개를 찾아준다는 의미이므로, [oyu]는 o,y,u 중 한개를 찾아 반환한다. 

여기서 중요한점은 [ ]는 하나의 문자로 취급한다는 점이다. 


Case 2

[dH]. 앞서 말한것 처럼 [ ]는 하나의 문자로 취급되므로 총 2개의 문자이다.

d나 H중에 하나의 문자를 찾고 그 뒤에 따라오는 문자를 선택하게 된다. 






page 8 - -(range 문자) 사용법





-(range 문자)는 문자를 일일히 입력할수 없을때 범위를 지정해주는 간편한 기호이다.


Case 1

C-K까지의 문자 중 하나를 선택


Case 2

Case 1번을 일일히 입력할 경우


Case 3

a에서 d까지의 문자 중 하나를 선택


Case 4

2에서 6까지의 문자 중 하나를 선택


Case 5

C에서 K, a에서 d, 2에서 6 까지의 문자 중 하나를 선택






page 9 - ^(캐럿 문자)의 다른 의미로써의 사용




^(캐럿 문자)가 [ ] 안에서 사용될 경우 not의 의미를 가진다


Case 1

C,D,g,h,i,4,5를 제외한 문자를 선택한다.


Case 2

W 에서 Z 까지를 제외한 문자를 선택한다.


신고

정규표현식 - 모든 문자





Page 5 - .(point) 문자




.(point)는 모든 문자를 문자 하나 단위로 가르킨다(* - 와일드 카드와 비슷)


Case 1

. 하나로 문자 1개를 가르킨다.


Case 2

. 6개로 문자 6개를 가르킨다. 

하단의 All matches는 마지막 문자가 6개가 되지 않으므로 끝을 제외시킨다.






Page 6 -  \(escape 문자)를 사용하여 .을 표시




Case1

일반 문자 . 을 찾고 싶었지만 기능이 예약되어있으므로 앞의 문자가 선택된다.


Case2

\(escape 문자)를 사용하여 .를 일반문자로 만들어 검색함


Case3

. 일반문자와 .기능 문자를 혼합하여 사용하는 예제



신고

정규표현식 - 위치와 이스케이핑





page3 - 검색 문자의 위치를 설정




Case 1

^ (캐럿 문자) : 소스상에 시작되는 문자를 검출

Regular Expression 으로 설정된 검색어로, 전체 문자열중에 시작 문자를 검출


Case 2 

$ (달러 문자) : 소스상에 끝에 있는 문자를 검출

Regular Expression 으로 설정된 검색어로, 전체 문자열중에 마지막 문자를 검출






page4 - 기존 예약 문자를 일반문자로 사용하는 





\(escape 문자) : 기존에 기능이 예약되어있는 문자를 일반 문자로 쓸때 사용


Case 1

달러가 앞에오는 문자를 찾으려 하였으나 $는 기능이 예약된 문자이므로 동작하지 않음


Case 2

\ (escape 문자)를 사용하여 $문자를 일반문자화 하여 사용함


Case 3

초기에 Case1에서 구현하려던 기능을 \ 문자를 이용하여 구현


Case 4

Case 3과 반대로 문자 시작이 아닌 마지막에 달러기호를 찾음


Case 5

\를 이용하여 \ 기호를 일반 문자화 하여 찾음



신고


정규표현식(Regular Expression)




정규표현식(Regular Expression) :  간단한게 말해서 문자를 처리하기 위한 언어이다. 

여기서 처리란 검색, 변경등을 의미한다. 

그전에 이와 같은 작업을 위해서는 먼저 조작할 언어를 찾아내야하는데 

여기서 정규 표현식이 큰 힘을 발휘하게 된다.


혹자는 정규표현식이 가독성이 별로 좋지 않으므로 사용을 자제하라고 하지만,  

많은 문자나 데이터를 사용할 필요가 없는 분야일 경우일 가능성이 크다. 

따라서 분야나 경우에 맞추어 본인이 사용 기준을 판단하는것이 좋다. 

정규표현식은 문법이 간결하고 간단하기때문에 배우기 쉬우므로, 

한번 배워두고 꾸준히 사용하는 것이 좋다고 생각한다.


포스팅은 생활코딩의 정규표현식 강의를 바탕으로 쓰여졌으며 

아래 웹 사이트의 정규 표현식 연습문제를 리뷰하며 진행된다. 


http://zvon.org/comp/r/tut-Regexp.html#Pages~Page_1





Page1 -  정규표현식은 대소문자를 구분한다. 





case 1 - Regular Expression에 적혀있는대로 입력했을 때(Hello) 검색된다
case 2 - 대소문자를 구분(case sensitive)하기 때문에 검색이 되지 않는다





Page2 -  정규표현식은 띄어쓰기를 구분한다.





case 1Regular Expression에 적혀있는대로 입력했을 때(Hello, world) 검색된다
case 2 - hello와 world 사이, 띄어 쓰기 때문에 다른 문자로 인식해 검색이 되지 않는다


신고

강의









정규표현식의 예제가 있는 홈페이지







도구들

gskinner

정규표현식을 작성하면서 실시간으로 그 결과를 테스트 할 수 있는 도구. 
패턴을 저정할 수 있고, 저장한 패턴을 URL를 통해서 공유할 수 있다. 
또한 다른 사용자들이 공유한 다양한 패턴들도 쉽게 찾아서 이용할 수 있다.



Regexr

정규 표현식에 대한 도움말과 각종 사례들을 보여주는 서비스로 정규표현식을 
라이브러리로  만들 수 있는 기능도 제공하고 있다.



Regexper

정규 표현식을 시각화해서 보여주는 도구





신고

+ Recent posts

티스토리 툴바