2016년 1월 18일 월요일

정규표현식3

수량자

{~~~}: 중괄호 안에 있는 값이 수량을 의미한다.

      ex) '*'는 {0,}과 같다.
         
          '+'는 {1,}과 같다.

          '?'는 {0,1}과 같다.

*?: '*'뒤에 '?'가 오면, 수량자 0을 의미한다.

      ex) One ring to bring them all and in the darkness bind them

          r.*? --->>> 'r' 하나만을 가리킨다.

            결과 First match: r
                   All matches: r, r, r, r ~~

+?: '+'뒤에 '?'가 오면, 수량자 1을 의미한다.

          r.+? --->>> 'r'과 'r'뒤에 문자 하나를 같이 가리킨다.

            결과 First match: ri
                   All matches: ri, ri, rk

??: '?'뒤에 '?'가 오면, 수량자 0을 의미한다.

          r.?? --->>> 'r'하나만을 가리킨다.

탐욕적인 수량자(Greedy quantifier)

      ex) <div>test</div><div>test2</div>

          <div>.+</div> --->>> <div>test</div><div>test2</div> 모두 선택된다.
          이렇게 맨 앞의 <div>와 맨 뒤의 </div>사이에 있는 모든 게 선택되는 것을
          탐욕적인 수량자라고 한다.

게으른 수량자(Lazy quantifier)

          <div>.+?</div> --->>> <div>test</div> 만 선택된다.
          이렇게 맨 앞의 <div>와 처음으로 나타난 </div>까지 선택되는 것을
          게르은 수량자라고 한다.

Character class

      ex) A1 B2 c3 d_4 e:5 ffGG88--__--

          \w --->>> 알파벳, 숫자, 언더라인('_')을 가리킨다
                              (\w를 'word'라고 부름)

            결과 First match: A
                   All matches: A1, B2, c3~~~

          \w* --->>> word를 0개 or 1개 or 2개 이상을 가리킨다.

            결과 First match: A1
                   All matches: A1, B2, c3, ~~~

          [a-z]\w* --->>> word앞에 a~z중 하나가 오는 것을 가리킨다.

            결과 First match: c3
                   All matches: c3, d_4, e, ffGG88
     
          [A-z0-9_] --->>> \w와 같다.

          \W --->>> 대문자 'W'는 word의 반대를 가리킨다.
                              (공백, 특수문자, '.', ',' 등)

          \d --->>> 0~9까지의 숫자를 가리킨다.

          \D --->>> 소문자 'd'의 반대 즉, 숫자가 아닌 것을 가리킨다.
   
      ex) Ere iron was b

          \b: 어떠한 단어를 식별할 수 있다.

          \b\w --->>> word가 시작되는 곳을 가리킨다.

            결과 First match: E
                   All matches: E, i, w, b

          \w\b --->>> word가 끝나는 곳을 가리킨다.

            결과 First match: e
                   All matches: e, n, s, b

          \b\w\b --->>> 단어가 하나인 것을 가리킨다.

            결과 First match: b

      ex) cat concat

          \bcat --->>> 앞에 있는 'cat'을 가리킨다.

          cat\b --->>> 뒤에 있는 'cat'을 가리킨다.

      \A: 시작점을 의미한다.

          \A.. --->>> 앞에 있는 'ca'을 가리킨다.

      \Z: 제일 뒤에 있는 경계를 의미한다.

          ..\Z --->>> 뒤에 있는 'at'를 가리킨다.

Assertions

      ex) AAAX----aaax---111---BBBXCCC

          \w+(?=X) --->>> word가 1개 or 1개 이상이어야 하고,
                                    옵션으로 대문자 'X' 앞까지 선택하라는 의미.

                                    '?='는 특수기호이다.
                                    문자열을 검색하는 데 'X'를 쓰지만, 선택할 때는 'X'를 제외.

          결과 First match: AAA
                 All matches: AAA, BBB

          \w+(?=\w) --->>> word가 1개 or 1개 이상이어야 하고,
                                      옵션으로 word가 아닌 문자가 있을 경우,
                                      word가 아닌 문자 앞에 있는 word를 기준으로,
                                      해당 기준까지 선택하라는 의미(기준을 선택되지 않음)

          결과 First match: AAA
                                 ('AAAX-'에서 'X'뒤에 '-'가 word가 아닌 문자이다.
                                  '-'의 앞 문자인 'X'를 기준으로 해당 기준까지 선택되고
                                  'X'는 선택을 받지 못한다.)
                 All matches: AAA, aaa, 11,  BBBXCC

댓글 없음:

댓글 쓰기

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...