정규표현식 훑기

기존 생활코딩의 동영상 강의의 내용을 이미지 캡쳐 화면으로 빠르게 훑어 볼 수 있는 모듈입니다.

Page 12

 

다른 특수한 기호들과 조합해서 사용하는 방법

 

* :

0부터 여러개를 포괄한다.

 

case 1 :

별표 앞에 .이 붙어있기 때문에

모든 텍스트를 선택한다.

 

. : 모든 공백, 문자, 숫자

 

case 2 :

-A*- :

- 앞에 A가 없을 수 도 있고, 1개 일수도 있고, 여러개 일수도 있다

그리고 그 앞에는 꼭 - 가 있어야 한다.

옇튼 정규표현식을 사용해서 All matches에 동그라미 친 부분이 나오는 이유는

 

-가 분명히 있고

앞쪽에도 -가 있으면서

 

A라는 부분은

 

*에 의해서 없어도 되기 때문에

All matches 의 --가 선택이 된것이다.

그 뒤의 부분도 마찬가지인 이유로 선택이 된것이다.

 

case 3

 

대괄호가 등장했다.

대괄호는 선택자 패턴의 후보군을 지정하는 것이다.

 

그리고 그 안에  -@라고 하게되면

소스에 있는 문자중에 - 혹은 @, 이 둘중에 하나만 있다면

그것은 선택이 되는것이고 [-@]가 한 글자에 대한 패턴이라고 한다면

그 뒤에 *가 붙어서 [-@]가 없거나, 1개일경우 혹은 여러개일 경우도 있다라는 뜻이다.

 

그런데 어차피 없는 경우에는 아무것도 선택할 것이 없기 때문에

어떤것도 선택이 되지 않는다.

 

 

그래서 다시 한번 살펴보면

case 3 :

First matches의

-@-***--"*"--***-@- 중에서 

-@- 이부분을 보자면

 

-는 [-@]* 이것이고

@는 [-@]*이것이고

다시 -는 [-@]*이것이다.

 

그런데 이상하게도

All matches에서

-@-***--"*"--***-@- 의 부분 처럼 하기 위해서 글로벌 옵션을 적용했음에도 불구하고

이렇게 선택이 되지 않는다.

왜인지는 모르겠지만 이렇게 선택하고 싶다면

 

 밑에 댓글을 달아주신 지그프리드님의 댓글처럼

-[-@]*라고 해줘야한다. 왜일까요..? 

 

 

댓글

댓글 본문
  1. 코코딩
    고맙습니다. 수정했습니다.
    대화보기
    • 지그프리드
      Case 3 에서 앞에 '-' 하나가 빠진 것 같네요. '-[-@]*' 이렇게 해야 All match와 맞는듯

      <<이유 설명 추가>>
      [ ]는 선택형 한글자이고 뒤에오는 *로 인해 없어도되고 있어도됩니다.
      반드시 있어야하는 -가 맨앞에 있어야 All matches가 성립하죠.
      만일 -맨앞에 이게 없다면 올매칭 혹은 무한매칭이 일어납니다. 없어도 매칭이 되니까요.

      제가 알고 있는 논리와 직관적으로 맞지가 않어서 테스트기로 해보았죠.
      그런데 \w* 경우 같은 때는 또 달랐던 것 같네요.
      애매한 순간이더군요.

      * 정말 완벽한(혹은 최신?) 표준과 표준테스트기가 있어야할 듯. 약간 혼란 스러운 부분이 있긴하더군요.