정규표현식

No.8·2023년 5월 25일
0

SSAFY Youtube Live

목록 보기
5/5

정규 표현식은 파워풀하다!

실수없이 손 빠르게 코드를 작성하는 능력은 중요함

수 십만의 라인의 텍스트를 원하는대로 쉽게 검색, 치환 할 수 있다면 ‘칼퇴’ 확률이 높아짐

사람이 직접 눈으로 스캐닝하며 찾는 것은 한장이면 해볼만하지만 수백장일 경우 어렵다.

‘윌리 표현식’ 도구를 쓴다면 금세 찾을 수 있을 것이다.

정규 표현식 (Regular expressions)

텍스트 검색, 치환에 사용

수십 라인의 프로그래밍 없이 정규식 1~2줄로 대부분의 문자열 작업 가능

선배들의 노하우가 담긴 파워풀한 텍스트 관련 도구

익숙해진다면 손 빠른 개발에 큰 도움을 줄 수 있다.

온전한 프로그래밍 언어는 아님

다른 프로그래밍 언어나 제품에 포함된 ‘작은 언어’의 느낌

제품마다 조금씩 다른 문법

정규표현식 사용 예시

  • email, 주민번호, 생년월일 등의 형식 검증(validation)
  • 텍스트를 취급하는 개발 코드 작성
  • (텍스트) 데이터의 전처리 작업
  • 프로젝트 리팩토링 작업
  • Database 검색, 치환 작업

IDE, editor, Ms Word도 지원한다.
colubflare등 웹 방화벽의 중요한 부분에서 정규표현식을 사용하기도 한다.

정규 표현식

sw엔지니어에게 외국어 같은 존재

다양한 문제 해결법

친숙해진다면 파워풀한 도구

https://regexr.com

한땀한땀 매칭하면서 보면 된다.

문자 하나 찾기

일반적인 문자 그대로 기재

‘.’와 같은 메타 문자를 검색하려면 ‘\’로 이스케이프

문자 집합으로 찾기

대괄호를 사용하여 문자 집합 표현

[]집합에 속한 문자 가운데 하나가 일치

[]내에 ‘-’은 연속 요소를 표현 [1-5] → [12345]

캐럿(’^’)문자는 집합 안에 있는 문자나 범위를 모두 제외

반복 찾기

파워풀한 정규 표현 패턴의 능력

‘+’ : 하나 이상 일치

‘*’ : 없거나 하나 이상 일치

‘?’ : 없거나 하나 일치

중괄호 ‘{}’ 내에 반복 횟수 기재 {3} : 3번

게으른 수량자료 문자를 최소로 일치

위치 찾기

텍스트 영역 내 특정 위치에서 검색 희망

‘\b’: 단어 경계

‘^’: 문자열 경계의 시작

‘$’: 문자열 경계의 끝

하위 표현식

큰 표현식 안에 속한 일부 표현식을 한 항목으로 다루도록 묶음

‘( )’ : 괄호로 묶음 기능

>{2,} vs (>){2,}

원하는 만큼의 덩어리 묶음

파워풀한 중첩된 하위 표현식

하위 표현식 - 역참조

하위 표현식으로 매칭된 타겟을 참조

일치한 부분을 반복해 찾거나 치환에 사용

텍스트를 검색하고 치환하는데 매우 유용

‘There is a ball on on the table.” - 실수로 중복된 전치사?

/(\w+) \1/g

전방 탐색

일치 영역을 발견해도 그 값을 반환하지 않는 패턴

실제로는 하위 표현식이며 같은 형식으로 작성

(?=일치할텍스트)

http://project.ssafy.com
ftp://pds.ssafy.com
/.+(?=:slightly_smiling_face:/g

후방 탐색

전방 탐색과 동일한 개념으로 방향만 역방향

(?<=일치할텍스트)

http://project.ssafy.com
ftp://pds.ssafy.com

/.(?<=\/\/).+/g

전후방 탐색 동시 사용

<head>
<title>SSAFY GIT<title>
</head>

/(?<=).*(?<\/title>)/g

정규 표현식 책 추천

일반 AP 개발자에게 필요한 내용을 빠르게 습득 가능

마스터 레벨까지 커버하지는 못함

마지막으로

비 개발자도 알아두면 유용한 도구

텍스트를 다루는 작업에 파워풀한 도구

이해가 아닌 체득의 영역

profile
88888888

0개의 댓글