정규표현식
언제 사용할까?
왜 사용할까?
유효성검사
사용자가 데이터를 조건에 맞게 입력했는지 등을 확인시 사용될수있다
ex)회원가입 시 아이디, 비밀번호 등의 조건을 정규표현식을 활용해서 만들수있다.
필요한 문자열추출하기 위해서 사용한다.
거의 모든 언어에서 지원된다(범용성이 높다)
단점은 무었일까?
정규표현식 사용방법1
- Flags global multline
- Character classes
- Anchors
- Excaped Characters
정규표현식 연습 사이트 https://regexr.com/
Character classes
.
모든문자들을 찾는다.
\w
알파벳,숫자,언더라인
\W
알파벳, 숫자, 언더라인 제외한 모든것
\d
숫자
\D
숫자를 제외한 모든것
\s
공백문자(띄어쓰기)
\S
공백이아닌것
[abc]
a나b나c
[^abc]
a,b,c가 아닌 모든 문자열
[a-g]
a에서 g까지의 소문자영문자
[a-z]
소문자
[A-Z]
대문자
[가-힣]
모든 한글문자
[a-zA-Z]
모든 영문자
[a-zA-Z0-9]
모든 영문자 모든 숫자
Anchors
^abc
문장의 시작이 abc (문장안에 들어있는 단어가 아니라 문장이다)
abc$
문장의 끝이 abc
^
=> [ ]안에서 사용될때는 not, 괄호밖에서 사용될때는 start
\b단어
단어로 시작
단어\b
단어로 끝나는 것 찾는다.
\B단어
단어의 앞부분이 단어가 아닌 것들
단어\B
단어의 뒷부분이 단어가 아닌 것들
ex)
apple
appleappleapple
pineapple
\b
apple
=> apple과 appleappleapple 과 apple
apple
\b
=> apple과 pineapple 과 appleappleapple
\B
apple
=> pineapple 과 appleappleapple
apple
\B
=> appleappleapple
Excaped Characters
\.
마침표 문자 자체를 의미한다. 점만 찾고 싶을 경우
\*
별표를 찾고 싶을경우
\\
\ 역슬래쉬를 찾고 싶은경우
다른 특수문자를 포함하는 것도 \
를 활용하면 찾을 수 있다.
\t
\n
\r
정규표현식 사용방법2
Quantifiers & Alternation
Groups & Lookaroud
Quantifiers
수량자 => 몇개가 들어갈것인가
문자+문자+문자+문자+문자 => 단어
a+p+p+l+e => 단어
ap*ple
ap+ple*
ap?ple
문자*
문자가 0개또는 여러개
문자+
문자가 1개 또는 그 이상
문자?
문자가 0개 또는 1개
ex)
rait rabit rabbit rabbbit rabbbbit
rab*it
b가 0개 또는 이상 rait
rabit
rabbit
rabbbit
rabbbbit
rab+it
b가 1개 또는 이상 rabit
rabbit
rabbbit
rabbbbit
rab?it
b가 0개 또는 1개 rait
rabit
중괄호이용
문자{숫자}
문자가 정확히 숫자만큼 있어야한다.
문자{숫자,}
문자가 숫자또는 그 이상 있는것을 찾는다.
문자{숫자,숫자}
문자가 숫자와 숫자 사이에 있는 것만 찾는다.
중괄호이용
rab{2}it
b가 2개 rabbit
rab{2,}it
b가 2개 또는 이상 rabbit
rabbbit
rabbbbit
rab{2,3}it
brk 2~3사이 rabbit
rabbbit
ex)
#좋아요, #좋아요반사, #팔로우, #맞팔,
#.+,
#좋아요, #좋아요반사, #팔로우, #맞팔,
하나의 덩어리로 나온다
#을찾는다
.모든문자 + 문자가 하나또는 그이상
,
#
과,
사이에 몇개의 문자가 오는지 모른다.
#.+?,
하면 #좋아요,
#좋아요반사,
#팔로우,
#맞팔,
매치가 최소한으로 이루어지는 것으로 나누어서 나온다
#을찾는다
.모든문자, + 모든문자가 하나또는 그이상, 이에대해 ? 0개또는 1개
,
#.{2,3}?,
#좋아요,
#팔로우,
#맞팔,
#을 찾는다.
. #뒤에 모든문자
{2,3} .에 대한 수량자 모든문자가 2개또는3개
? 매치가 최소한으로 이루워지게 한다.
(lazy 문자가 최소한으로 매치되는 것만 찾는다.)
Alternation
a|b
a또는b 찾는다.
ex)gray grey
gr[ae]y
gray
grey
Character classes [ae] a나e
gr(a|e)y
gray
grey
(a|e)를 그룹으로 만들었다.
a 또는 e
Groups & Lookaroud
그룹
()
그룹
\1
역참조
특정부분만 뽑을경우 그룹을 짖는것 특정한 것만 그룹되서 나온다.
#.+?
역참조
(.+)\s\1
(.+)
를 한번더 한다.
(?:abc) 그룹에서 빼고 싶을 경우 \[(?:특가할인|품절)].*
긍정전방탐색
(?=abc) 검색조건에는 포함되나 결과에는 포함되지 않는 .*(?=-레몬스토어)
부정전방탐색
(?!abc) .*(?=-(?!레몬).*스토어)