본문 바로가기
개발 지식

정규표현식(regular expression)이란? + 쉽게 공부하는 사이트

by hi-rachel 2022. 12. 19.

정규표현식(regular expression)이란?

정규 표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.

 

웹 프로그래밍을 공부하다 잠깐 정규표현식을 사용하는 걸 보고 '오 편리하네 근데 좀 복잡하다~ 어렵다~'라고 생각했는데 막상 공부해보니 이해하고 간단 규칙만 알면 쉽게 사용할 수 있었다. 정규표현식이 있는 것에 감사해야겠다.

 

공부 추천 사이트

드림코딩 유튜브

드림엘리님 유튜브를 보고 간단하게 규칙을 파악할 수 있었다.

 

문법 정리 레포

 

추가 공부 사이트

 

영상 속 예시 (https://regexr.com/5mhou)

- 이나 . 또는 띄어쓰기로 구분된 전화번호만 찾기

처음 내가 작성한 정규표현식

1번째 방법으로도 찾아지지만 좀 더 세분화해서 규칙을 작성하는 게 알아보기도 좋고 후에 규칙에 부합하는 문자열을 더 잘 찾을 수 있다.

 


 

이메일 찾기

 

특정 URL에서 조건에 맞춰 찾기

 

const regex = /(정규표현식)/; 을 넣어주고 (백틱 아님)

const url = ''; 특정 url에서

const answer = url.match(regex)를 해주면 조건에 맞는 문자열을 쉽게 찾을 수 있다.

 

추가 예시

coding-test에서 자주 나오는 anagrams 문제에서

밑에 있는 cleanString 함수처럼 ! 등(특수문자)는 제거하고 서로 같은 문자열인지 볼 때도 정규표현식을 이용할 수 있다.
 
// --- Directions
// Check to see if two provided strings are anagrams of eachother.
// One string is an anagram of another if it uses the same characters
// in the same quantity. Only consider characters, not spaces
// or punctuation.  Consider capital letters to be the same as lower case
// --- Examples
//   anagrams('rail safety', 'fairy tales') --> True
//   anagrams('RAIL! SAFETY!', 'fairy tales') --> True
//   anagrams('Hi there', 'Bye there') --> False

function anagrams(stringA, stringB) {
  return cleanString(stringA) === cleanString(stringB);
}

function cleanString(str) {
  return str.replace(/[^\w]/g, "").toLowerCase().split("").sort().join("");
}

/정규표현식/플래그

/[^\w]/g = [(\w)문자가 아닌(^)]모든 문자 = /[\W]/g
 
📌 문법
[^] : 부정 = 문자 클래스 안의 문자를 제외한 나머지
[...] : 문자셋  = 가능한 문자열의 집합과 일치시킴
\w : word 문자 = 영어 알파벳, 숫자, _
\W : word 문자 아님 = (영숫자, _)가 아닌 문자열들과 일치시킴
 
📌 플래그 (동시에 여러개 가능)
/g : global = 모든 문자 검색(쓰지 않으면 매칭되는 첫 문자만 검색)
i :  ignore case = 대소문자 구분 안함
m : multi line = 여러 행의 문자열에 대해 검색
 

 

+) 영어 알파벳에서 vowel(모음)만 찾는 알고리즘 문제에서도 regex와 match()메서드를 이용해 풀 수 있다.

i 플래그를 붙여주면 .toLowerCase() 소문자 변환을 해주지 않고 풀 수 있어 편리하다.

function vowels(str) {
  const matches = str.match(/[aeiou]/gi);
  return matches ? matches.length : 0;
}

 

 

 

'개발 지식' 카테고리의 다른 글

[웹개발] HTTP 응답 상태  (0) 2022.09.17