수량자는 해당 문자가 몇 개있는지를 명시하여 패턴을 찾는 방식입니다. *, +, ?, {}를 사용합니다.
11. (실전) 캐릭터 클래스
모든 문자나 숫자 등 자주 사용되는 문자 패턴을 캐릭터 클래스로 제공합니다.
12. (실전) 이스케이프 문자
백슬러쉬를 사용하여 이미 사용되고 있는 특수 문자를 표현할 때 사용합니다.
🧐
대괄호 소괄호를 인식하기 위해 대괄호 닫기는 이스케이프 문자를 안넣어도 애러가 안나는데 소괄호 닫기에는 이스케이프 문자를 꼭 써야 합니다. (해당 챕터 맨 마지막에 테스트한 코드를 넣어두었습니다.)
13. 언어별 실습
주 실습은 Python으로 할 예정이지만, Javascript와 Python을 실습 할 수 있도록 준비하였습니다. 따로 설치 없이 실습만 해볼 수 있도록 javascript는 크롬 개발자 도구를, python은 colab을 이용하도록 하겠습니다.
13.1 환경설정
javascript로 실습을 해보실 경우 크롬에 접속하여 about:blank을 url에 입력하시고 개발자 도구를 열어주세요. window의 경우에는 ctrl + shift + i, mac의 경우에는 cmd + option + i입니다. 메뉴에서 개발자 도구를 클릭하셔서 열어도 실행 가능합니다.
python을 사용하실 경우 google에서 colab을 접속하신 다음 새 노트를 클릭해주세요.
hello world
hello world
hello, world
Hello World
hello world hello
hello
hallo
hollo
heallo
yellow
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567891011121314151617181920
aaabbcaaabbcabcabc
aaa bb c aaa bb c a b c a b c
aaa1bb2c3aaa4bb5c6
[123456]
123[456]789
abc[def]ghij
010-9091-5491
010-5043-2901
010-5050-40409
010-49492-3131
010 2913 3132
01019133829
064-721-3213
010.1913.3829
paul-korea@naver.com
paul@naver.com
leehojun@gmail.com
hojun.lee@gmail.com
test.test@go.go.go
https://github.com/LiveCoronaDetector/livecod
github.com/LiveCoronaDetector/livecod
https://github.com/LiveCoronaDetector
I never dreamed about success, I worked for it.
Do not be afraid to give up the good to go for the great.
hello (hello world) hello
hello \\hello world// hello
^^
:)
[(name, leehojun), (age, 10), (height, 180), (email, paul-lab@naver.com)]
{name : leehojun, age : 10, height : 180, email : paul-lab@naver.com}
가나다라마바사아자차카타파하
ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ
안녕_하세요
안녕-하세요
수사
수박
수상
동해 물과 백두산이 마르고 닳도록 하느님이 보호하사 우리나라 만세
/hello/gm
/hello world/gm
/Hello/gm
/Hello/gim
/^hello/gm : 처음에 hello
/hello$/gm : 끝에 hello
/./gm : 모든 문자열(*과 같은 역할)
/....../gm : 모든 6개의 문자열
/h[eay]llo/gm : 대괄호 안에 문자는 문자 1개에 해당!
/h[ea]l../gm : 총 5개의 문자
/h[a-f]llo/gm
/[a-zA-Z0-9]/gm : 모든 알파뱃과 숫자를 찾음
/[^a-zA-Z0-9]/gm : 나머지 문자열을 찾음
/h[^ae]llo/gm : 대괄호 안에 있다면 not에 의미
/(on|ues|rida)/gm : 그룹 1로 3개 중 매칭되는 패턴 찾음
/(?:on|ues)/gm
/(on|ues)|(rida)/gm : 그룹1(on|ues)과 그룹2(rida)로 각각 매칭되는 패턴 찾음
/.(a|e|o)ll./gm
/hello (?!world)/gm : hello 뒤에 world가 오지 않는 것
/hello (?=world)/gm : hello 뒤에 world가 오는 것
_* : 앞에 있는 문자가 0개 ~ N개
_+ : 앞에 있는 문자가 1개 ~ N개
_? : 앞에 있는 문자가 0개 ~ 1개
{3} : 3개
{3,} : 3개 이상
{1,3} : 1개 ~ 3개
_* : 앞에 있는 문자가 0개 ~ N개 ({0,})
_+ : 앞에 있는 문자가 1개 ~ N개({1,})
_? : 앞에 있는 문자가 0개 ~ 1개 ({0,1})
/[0-9]{3}[-.* ][0-9]{4}[-.* ][0-9]{4}/gm
/[0-9a-zA-Z]{2,3}[-.* ][0-9]{3,4}[-.* ][0-9]{4}/gm
/[0-9a-zA-Z]+@[0-9a-zA-Z]+.[a-zA-Z]+/gm
/\w/gm : 워드
/\w{5} /gm : 5개의 글자와 스페이스 하나
/\W/gm : not 워드
/\d/gm : 숫자
/\D/gm : not 숫자
/\s/gm : 스페이스
/\S/gm : not 스페이스
/\[.*]/gm : 대괄호([]) 안에 감싸여진 문자열
/\(.*\)/gm : 소괄호 안에 감싸여진 문자열
/\\.*\//gm : 이미 사용되고 있는 특수문자로 감싸여진 문자열
/-.*-/gm : 이스케이프 문자를 사용할 필요가 없는 경우
/\^\^/gm : 이스케이프 문자가 필요한 경우
/:\)/gm : 이스케이프 문자가 필요한 경우
re.search(패턴, 문자열, flags=0)
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.search(정규표현식, 문자열)
print(f're.search(정규표현식, 문자열) : {결과}')
if 결과:
print(f'결과값의 시작과 끝 : {결과.start()}, {결과.end()}')
print(f'매칭 그룹핑 : {결과.group(0)}') # 그룹 0 ~ 3
else:
print('매칭 결과 없음!')
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.findall(정규표현식, 문자열)
print(f're.findall(정규표현식, 문자열) : {결과}')
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.finditer(정규표현식, 문자열)
print(f're.finditer(정규표현식, 문자열) : {결과}')
for i in 결과:
print(i)
print(i.start(), i.end())
print(i.group())
import re
정규표현식 = r'([a-zA-Z]+) : (\d+)'
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.split(정규표현식, 문자열)
# split(정규표현식, 문자열, [최대분할수])
결과
import re
정규표현식 = r','
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.split(정규표현식, 문자열, 2)
결과
import re
정규표현식 = r','
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.sub(정규표현식, " !!!", 문자열)
결과
import re
문자열 = 'name : leehojun, age : 10, height : 180, email : paul-lab@naver.com'
결과 = re.compile(',').sub(" !-!", 문자열)
결과
import re
정규표현식 = re.compile(r'([a-z])([1-9])')
문자열 = 'a3b4c2'
결과 = 정규표현식.findall(문자열)
s = ''
for i, j in 결과:
s += i*int(j)
s