기타
정규표현식(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로 그 사이에 엄청나게 많은 문자들이 포함되어있다
이제 응용을해보자
- 전화번호만 찾기
\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}을 충족하지 못해 선택되지 않았다.