기타

정규표현식(Regex)

자랄수있다 2022. 9. 1. 14:59

필요한 부분만 검색해서 쓰다보니 제대로 모르는 거 같아서 따로 정리하는 시간을 가져보겠다!

유튜브의 드림코딩님의 영상을 참고했다

 

테스트는 https://regexr.com/5mhou 이곳에서~

그럼 시작

 

    • /gra?y/
      a가 있거나 없거나 
      ex) gray gry

      ++ 웹주소 속 https:// 와 같이 있어도 없어도 되는 애들에 쓰면 좋겠다 

    • /gra*y/
      a가 있거나 없거나 많거나 
      ex) gray gry graay graaay 

    • /gra+y/
      a가 하나 이상
      ex) gray graay graaaaaaay

    • /gra{2,10}y/
      a가 2개 이상 10개 이하

    • /gra{2,}y/
      a가 2개 이상
       
      ------------------------------------------여기서 부터 양끝 //은 생략------------------------------------------

    • \bYa (백스페이스임에 유의!)
      바운더리의 b임
      Ya로 시작하는 단어만 찾음 ( 대소문자 구문 o)
      ex) Ya Yayy YaYaYa

    • Ya\b
      Ya로 끝나는 단어만
      ex) Ya yaYa YaYaYa

    • Ya\B
      단어의 끝에 쓰인 Ya만 빼고
      ex) YaYaYa(에서 앞의 두 개의 Ya만 찾아줌) 단, 딱 'Ya'라는 단어가 있다면 이건 처음이자 마지막 Ya이므로 안 찾아줌


    • ^Ya
      Ya로 시작하는 '문장'을 찾아줌
      ex) 

    • 반대는 Ya$
      ex) 

  • . (마침표)
    모든 문자열을 선택

모든 문자열의 시작/끝은 이렇게 할 수 있겠다



  • 마침표(특수문자) 그 자체를 검색하고 싶을 때는 \. 요렇게
    특수문자 앞에 백슬래시를 붙어주자
    ex) \$   \[   \^

 

  • \d 는 모든 숫자를 찾아준다 (d = digit)
    [0-9]와 같음

  • 반대로 /D는 숫자를 제외한 모든 문자를 찾아줌
  • \w는 모든 word character를 찾아준다
     a-z, A-Z, 0-9 과 _(언더스코어)가 이에 속한다
    반대로, \W는 word character을 제외한 것들을 찾아준다

 

 

  • \s 는 모든 스페이스를, \S는 스페이스를 제외한 모든 것들을 찾아준다

++ 한글을 찾고 싶을땐 [ㄱ-ㅎㅏ-ㅣ가-힣] 를 사용하자

완전한 글자만 원할 땐[가-힣]을 쓰면 된다.

단, [ㄱ-힣]은 중간에 한글이 아닌 다른 문자가 포함되므로 쓰지 않도록 한다

유니코드에서 'ㄱ'은 코드값이 12593, '가'는 44032로 그 사이에 엄청나게 많은 문자들이 포함되어있다 

이제 응용을해보자

 

  1.  전화번호만 찾기

\d{2,3} : 첫 번째 숫자 2개이상 3개이하

[-. ] : - , 스페이스 셋 중 하나

\d{3} : 가운데 숫자 딱 세자리

[-. ] : - , 스페이스 셋 중 하나

\d{4} : 마지막 숫자 딱 네자리

 

2.   이메일만 찾기

이번엔 정규식 전체를 괄호로 묶어 ^()$ 를 붙였다. 앞 뒤로 다른 문자열 붙은 것 없이, 정확히 괄호 속의 형식만 찾아주겠다는 뜻이다

\w+ : word character 1개이상

@ : @

[a-z\.\-]+ : 영어 소문자와 . - 포함한 문자 1개이상

\. : .

[a-z]{2,3} : 영어 소문자 2자이상 3자 이하

마지막 이메일은 맨 마지막이 [a-z]{2,3}을 충족하지 못해 선택되지 않았다.