ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규표현식
    코딩 이론 2023. 5. 4. 18:53

    이번에도 프로그래머스 문제이다. 문자열이 주어지는데 숫자로만 이루어져 있나 판별하는 문제였다. 여기서 정규표현식을 사용하여 숫자를 모두 제거하고 빈 문자열인지 아닌지 판별하여 결과를 도출하려했다. (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
Designed by Tistory.