정규 표현식 유형

HS K·2023년 3월 1일

1번 유형 : /[abc]/g;

function replaceNumber(str) {
  const pattern = /[205]/g; // 정규표현식 패턴: 2, 0, 5 중 하나를 찾음
  return str.replace(pattern, (match) => {
    if (match === "2") return "0"; // 2를 0으로 치환
    if (match === "0") return "5"; // 0을 5로 치환
    if (match === "5") return "2"; // 5를 2로 치환
  });
}

2번 : .{n-1}

  • n-1개의 문자를 건너뛰고 n번째 문자를 선택하는 것
const str = "Hello, World!";
const regex = /.{2}(.?)/g;
const result = str.replace(regex, "$1"); // "l,Wrd”

설명

.{2}(.?)에서 .?(.)는 두 개의 그룹을 지정하고 있다.

첫 번째 그룹은 .와 ?로 구성되어 있으며, 임의의 한 문자를 매칭한다.
두 번째 그룹은 .로 구성되어 있으며, 하나의 문자를 매칭한다.
즉, 이 정규표현식은 임의의 한 문자 뒤에 나오는 하나의 문자를 추출한다.

  • replace 메소드를 사용하여 정규표현식과 일치하는 문자열을 추출한다.
    $1은 두 번째 괄호로 묶인 그룹을 나타내며, 선택적으로 일치하는 문자를 나타낸다
  • 중간에 공백이 있다면?
    .은 임의의 한 문자를 매치하며, 공백 문자도 포함한다.
    하지만 공백 문자를 포함하지 않고 일반적인 문자로만 처리하려면 \S를 사용하면 된다. 따라서 임의의 문자 뒤에 공백이 아닌 문자를 매치시키려면 .{n-1}\S 를 쓰면 n-1개의 임의의 문자 뒤에 공백이 아닌 문자를 매치한다는 뜻이 된다.

2-2번 : 코드 변수를 문자열에서 추출할 때

const regex = new RegExp(.{${code-1}}(\\S)?, 'g');

설명

  • .{code-1}은 코드의 배수 번째 글자 앞까지의 임의의 문자열을 매치하고, (\S)는 공백이 아닌 문자를 그룹화하여 추출한다.. g 플래그는 전역 검색을 수행하도록 설정한다.

  • \S는 공백이 아닌 모든 문자를 의미하는 특수 문자이다.

  • (\\S?)는 공백이 아닌 문자가 0개 또는 1개 포함된 문자열을 찾는다는 뜻이다.

    • 여기서 공백이 아닌 문자가 0개 또는 1개 포함된 문자열이란?(ChatGPT 정보니 틀릴 수도 있다는점은 감안할 것)
      • 빈 문자열 (''): 공백이 아닌 문자가 없으므로 0개
      • 한 개의 문자만 있는 문자열 ('a', 'x', 'Z' 등): 하나의 공백이 아닌 문자가 포함되어 있으므로 1개
      • 숫자나 기호 등 공백이 아닌 문자가 아예 포함되어 있지 않은 문자열 ('_', '&', '#' 등): 0개

정규표현식과 관련된 프로그래머스 문제

  1. 가위 바위 보
  2. 문자열 정렬하기 (1)
  3. 3,6,9 게임

https://velog.io/@hustle-dev/JavaScript-정규표현식#그외

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글