-
이번에도 프로그래머스 문제이다. 문자열이 주어지는데 숫자로만 이루어져 있나 판별하는 문제였다. 여기서 정규표현식을 사용하여 숫자를 모두 제거하고 빈 문자열인지 아닌지 판별하여 결과를 도출하려했다. (https://school.programmers.co.kr/learn/courses/30/lessons/12918)
정규표현식
- 문자열에서 특정 문자 조합을 찾기 위해 사용
- 텍스트 검색 및 바꾸기, 데이터 유효성 검사, 텍스트 파일 구문 분석과 같은 작업할 때 사용
- 기호를 사용하여 암호처럼 생기다보니 가독성이 떨어짐
생성
// 정규 표현식 리터럴 const re = /ab+c/ // 정규 표현식 생성자 함수 const re = new RegExp('ab+c')- 정규 표현식 리터럴
- 슬래시로 패턴을 감싸서 작성
- 스크립트를 불러올 때 컴파일
- 패턴이 바뀌지 않을 경우 리터럴을 사용하면 성능이 향상 될 수 있다.
- 생성자 함수
- new RegExp('패턴') 으로 생성
- 런타임 시 컴파일
- 패턴이 바뀌거나 사용자의 입력 등 외부 출처에서 패턴을 가져올 경우 사용한다
패턴
// Assertions const text = 'A quick fox'; const regexpLastWord = /\w+$/; console.log(text.match(regexpLastWord)); // Array ["fox"] // Character classes const chessStory = 'He played the King in a8 and she moved her Queen in c2.'; const regexpCoordinates = /\w\d/g; console.log(chessStory.match(regexpCoordinates)); // Array [ 'a8', 'c2'] // Groups and Ranges const aliceExcerpt = 'The Caterpillar and Alice looked at each other'; const regexpWithoutE = /\b[a-df-z]+\b/ig; console.log(aliceExcerpt.match(regexpWithoutE)); // Array ["and", "at"] // Quantifiers const ghostSpeak = 'booh boooooooh'; const regexpSpooky = /bo{3,}h/; console.log(ghostSpeak.match(regexpSpooky)); // Array ["boooooooh"] // Unicode property escapes const sentence = 'A ticket costs 2000 👌.'; const regexpEmojiPresentation = /\p{Emoji_Presentation}/gu; console.log(sentence.match(regexpEmojiPresentation)); // Array ["👌"]- Assertions : 줄이나 단어의 시작과 끝은 나타내는 경계 그리고 일치가 가능한 방법을 나타내는 패턴 등
- Character classes : 문자와 숫자 같은 문자의 종류를 구분한다.
- Groups and Ranges : 표현 문자의 그룹과 범위를 나타낸다.
- Quantifiers : 일치시킬 문자 또는 식을 나타낸다.
- Unicode property escapes : 이모지, 구두점, 문자를 일치시킬수 있다.
플래그
// 정규 표현식 const re = /패턴/플래그; // 생성자 함수 const re = new RegExp('패턴', '플래그');- 전역 탐색이나 대소문자 무시와 같은 특성을 지정한다.
- 단독으로 사용 가능하며 순서와 상관없이 여럿을 지정할 수 있다.
플래그 설명 d 부분 문자열 일치에 대해 인덱스 생성 g 전역 탐색 i 대소문자 구분하지 않음 m 여러 줄에 걸쳐 탐색 s 개행 문자가 .과 일치 u 패턴을 유니코드 코드 포인트의 시퀀스로 간주 y 대상 문자열의 위치에서 탐색을 시작 적용
// s는 문자열 const replacedS = s.replace(/[0-9]/g, '');- s문자열에서 0~9를 전역 탐색해서 빈 문자열로 바꿔라 라는 코드이다.
솔직히 아직 잘 모르겠다... 다음에도 보면서 작성할 것을 알지만 그래도 다음은 지금보다 낫을거라고 믿는다.
'코딩 이론' 카테고리의 다른 글
자바스크립트에서 가비지 컬렉션이란? (0) 2023.07.04 리액트의 생명주기 (0) 2023.05.15 가우스 공식 (0) 2023.05.03 str.repeat() (0) 2023.05.02 배열 생성자 (0) 2023.05.01