정규표현식(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 |
---|