A. 정규식 : Regular Expression
1. 텍스트를 검색할 때 Ctrl+F 로 찾는 것을 조금 더 발전시킨 형태
- 글자 자체를 가지고 찾는 게 아니라 패턴이라는 것을 사용함
- 오피스 프로그램은 찾기(바꾸기) 기능에서 정규식을 지원함
2. 정규식 사용 사례
- 입력 유효성 체크(Form Validation) : 이메일 주소가 맞는지 아닌지
- 텍스트에서 특정 부분을 추출 : 우편번호 추출
- 특정 텍스트 바꾸기 : 계란 -> 달걀
- 큰 텍스트를 작게 쪼개기 : 콤마나 점으로 구분해서 문장 쪼개기
3. 정규식 문법 배우기
- / ... / 속에 패턴을 표기
4. 패턴으로 찾기 데모 : 다음 세 개의 패턴으로 정규식을 배우자
- 010-3456-0123 : 전화번호 패턴 나타내기
- soongon@gmal.com : 이메일 주소 패턴 나타내기
5. 전화번호 패턴
\d\d\d-\d\d\d\d-\d\d\d\d
- \d : 0부터 9까지 숫자
- \w : 숫자와 문자(대소문자 포함), _(언더스코어)
- \s : 공백문자
- . : \n을 제외한 모든 문자
[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
- [] 속에 글자들은 순서에 관계없이 한 글자를 표현
- 다른 표현 : [0][1][01689]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
[0-9]{3}-[0-9]{4}-[0-9]{4}
- ? : 0 또는 1번 발생 (zero or one)
- * : 0 또는 여러 번 발생 (zero or many)
- + : 1번 이상 발생 (one or many)
- {n} : n번 발
6. 이메일 주소 패턴
- [a-zA-Z0-9._%+-]+ # 사용자이름
- @ # @ 심벌
- [a-zA-Z0-9.-]+ # 도메인명
- \.(com|net|co.kr) # dot something, | (파이프) : 다중 매칭
7. 연습문제 : 웹 주소 패턴 표현하기
- \b(https?:\/\/)?([\w.]+){1,2}(\.[\w]{2,4}){1,2}\b
§ / 문자를 표현할 때 : 이스케이프를 사용 (\/)
§ /b : 바운더리를 표현
§ ( ) : 괄호를 사용하여 그룹을 적절히 활용
§ . (dot) 문자 : 와일드카드, \n 문자 제외하고 모든 문자에 대응
§ 실제로 . 을 표시하고 싶으면 \. 으로 사용
§ ^ : 시작을 표시
§ $ : 끝을 표시
B. 정규식을 사용한 텍스트 패턴 검색
1. match() : 원하는 문자열 패턴으로 소스 문자열과 일치하는지 비교
- result = re.match(‘hello’,‘hello world’) # ‘hello’는 패턴이고 ‘hello world’는 확인할 소스 문자열이다.
- result : 결과가 None이면 매칭이 실패했다는 의미
2. 패턴을 미리 컴파일 할 수 있다.
- phonenum_regex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
3. 패턴과 소스를 비교하는 다른 방법
- search() : 첫 번째 일치하는 객체를 반환
- findall() : 모두 일치하는 문자열을 리스트로 반환
- split() : 패턴에 맞게 소스를 쪼갠 후 문자열 조각의 리스트를 반환
- sub() : 바꾸기 기능, 패턴과 일치하는 소스의 부분을 대체인자로 변경
[Tool] Miro(미로) workspace for innovation - 실시간 UX협업 도구 ( 온라인 화이트보드 플랫폼 )
[Fortinet] Fortigate scripts 사용 방법
[보안] 01. 악성코드 정의, 악성코드 종류, 감염 위치, 네이밍 스키마