정규표현식

숭이·2022년 3월 6일
0

정규식

  1. ‘ . ’은 모든 character를 나타낸다.
    -> /./g

  2. 단어에서 특정부분에 여러개의 문자가(character) 올 수 있는 경우 [ ] 안에 올 수 있는 문자열을 집어넣는다.
    -> /b[abc]r/g : bag, bbg, bcg
    주의! /b[a,b,c]/g의 형태로 작성하면 안됨! (쉼표, 띄어쓰기로 구분하는게 아니라 이어붙임)

  3. 단어에서 특정 문자를 제외하고 나머지를 표시하고 싶을 경우 [ ]안에 '^'뒤에 제외하고싶은 문자를 집어넣는다.
    -> /b[^ab]g: 'bag', 'bbg' 제외한다.

  4. 범위를 지정하고 싶을 때는 ‘ [ - ] ‘를 사용하여 범위를 지정해준다.(알파벳, 숫자)
    -> /[a-e]/g : a, b, c, d, e
    -> /[1-5]/g:" 1, 2, 3, 4, 5

  5. 문자 뒤에 ‘ * ‘를 붙이면 해당 문자가 0~무한 까지를 표시한다.
    -> /be\*g : br, ber, beer...

  6. 문자 뒤에 ‘ + ‘를 붙이면 해당 문자가 1~무한 까지를 표시한다
    -> /be+g : ber, beer...
    주의!
    ‘ * ‘은 해당 문자가 없는것도 표시, ‘ + ‘는 무조건 1번은 나와야 함

  7. 문자 뒤에 ‘ ? ‘를 붙이면 optional을 뜻한다. (나와도 되고 안 나와도 되고)
    -> /colou?r/g : color, colour

  8. 문자 뒤에 ‘ { 숫자 } ’를 붙이면 해당 문자가 몇번 중복된다를 표시할 수 있음(be{2}r -> beer)
    -> /be{2}r/g : beer

  9. 문자 뒤에 ‘ { 숫자, }’를 붙이면 해당 문자가 적어도 몇번은 나와야 한다를 표시할 수 있음
    -> /be{2}r/g: beer, beeer, beeeer...

  10. 문자 뒤에 ‘ { 숫자 , 숫자}’를 붙이면 해당 문자가 중복되는 범위를 표시할 수 있음
    -> /be{1,3}r/g: ber, beer, beeer

  11. ‘ ( ) ’를 사용하여 표현식을 그룹화 할 수 있다.
    -> /(haa)/g: 'haa' 단어를 그룹화

  12. ‘ \숫자 ‘ 의 뜻은 n번째 그룹의 값을 사용하겠다는 뜻이다.
    -> /(ha)-\1,(haa)-\2/g : 'ha-ha,haa-haa' (1이 'ha'를 나타내고 2가 'haa'를 나타냄)

  13. ‘ ( ?: ) ‘ 의 뜻은 그룹핑을 하지만 그룹핑 값을 저장하지 않는다는 뜻이다. 따라서 \n의 효과를 받지 않는다
    -> /(?:ha)-ha,(haa)-\1/g: 'ha-ha,haa-haa'('(?:ha)'는 그룹핑값을 저장하지 않으므로 '\1'은 'haa'가 된다)

  14. ‘ | ‘ 의 뜻은 or를 의미한다
    -> /(C|c)at|rat/g: Cat, cat, rat

  15. ‘ { } [ ] / \ + * . $^ | ? ‘와 같은 특수문자를 표시하고 싶을 때는 ‘ \ ‘를 앞에 붙여준다.(저 특수기호들은 \ 을 붙이지 않으면 각각의 뜻이 있음)
    /(\*|\.)/g : ' * ', ' . '

  16. ‘ ^ ‘ 는 줄의 시작을 의미함
    -> /^[0-9]/g : 줄의 첫글자가 숫자임을 나타냄

  17. ‘ $ ‘를 뒤에 붙이면 앞에 문자로 끝난다는 것을 의미함
    -> /html%/g : 줄의 마지막이 'html'로 끝남

  18. ‘ \w ’는 문자, 숫자, 를 나타낸다.
    -> /\w/g: 문자, 숫자,
    를 나타냄
    -> /[a-zA-Z0-9_]와 똑같은 의미!

  19. ‘ \W ’ 는 문자, 숫자, 를 뺀 나머지를 의미한다
    -> /\W/g: 문자, 숫자,
    를 제외한 나머지를 나타냄 ('공백', ' . ', ' : ', ' ! ', ' ? ' ...)
    -> /[^a-zA-Z0-9_]와 똑같은 의미!

  20. ‘ \d ‘ 는 숫자를 의미한다.
    -> /\d/g = /[0-9]/g

  21. ‘ \D ‘ 는 숫자를 뺀 나머지를 의미한다.
    -> /\D/g = /[^0-9]/g

  22. ‘ \s ‘ 는 공백(‘ ‘)을 의미한다.
    -> /\s/g: ' '

  23. ‘ \S ‘ 는 공백을 제외한 나머지를 의미한다.
    -> /\S/g: ' '을 제외한 나머지

  24. ‘ (?=) ‘ 는 꼬리말에 해당 문자가 있는지를 확인한다.
    -> /\d+(?=PM)/g : 'Date: 4 Aug 3PM'에서 '3'을 나타냄
    -> (b(?=a)이면 b뒤에 a가 있으면 OK -> 결과값 ‘b’)

  25. ‘ (?!) ‘ 는 꼬리말에 없는지를 확인한다
    -> /\d+(?!PM)/g: 'Date: 4 Aug 3PM'에서 '4'을 나타냄
    -> (b(?!a)이면 b뒤에 a가 없으면 OK -> 결과값 ‘b’)

  26. ‘ (?<=) ‘ 는 앞에 해당 문자가 있는지를 확인한다.
    -> /(?<+\$)\d+/g: '$5' 처럼 앞에 $표시가 있는 숫자
    -> 'Product Code: 1064 Price: $5' 에서 '$5'를 나타냄

  27. ‘ (?<!) ‘ 는 앞에 해당 문자가 없는지를 확인한다.
    -> /(?<!\$)\d+/g : 앞에 $표시가 없는 숫자
    -> 'Product Code: 1064 Price: $5' 에서 '1064'를 나타냄

  28. ‘ /g ‘ 는 전체 범위에서 탐색한다.

  29. ‘ /m ‘ 는 각 줄을 분리하는 역할을 한다.

  30. ‘ /i ‘ 는 대소문자 구분을 하지 않는다
    -> 각각 g, m, i 는 같이 사용할 수 있다( ‘ /gm ’, ‘ /gmi ’처럼..)

  31. 정규표현식은 기본값으로 greedy 방식을 택한다. (조건에 맞는 끝까지)
    -> /.*r/g : 'ber beer beeer beeeer'에서 'ber beer beeer beeeer' 모두를 나타낸다.

  32. Greedy 방식이 아닌 Lazy 방식을 택하려면 * 뒤에 ? 를 붙여준다.
    -> /.\*?r/g : 'ber beer beeer beeeer'에서 'ber' 하나만을 나타낸다.

0개의 댓글