20241016 정규표현식

기본적인 정규표현식 정리는 이 글을 참고하자.

문자열에서 a로 시작해서 b로 끝나는 패턴 찾기

문자열에서 aXb나 aXXXb와 같은 패턴을 찾고 싶을 수 있다.
다음과 같이 정규표현식match() 함수를 사용하면 가능하다.

str.match(/a(.*?)b/);

여기서 .는 모든 문자, *는 0개 이상, ?는 가능한 적은 수의 문자를 매칭하도록 한다.

추가로 예를 들어 //로 시작하고 \n으로 끝나는 패턴을 모두 찾고 싶다면,

while(str.match(/^\/\//g)) {
   const match = str.match(/\/\/(.*?)\\n/);
   str = str.substr(match[0].length);
}

여러개의 구분자로 문자열 나누는 방법

정규표현식join() 함수를 활용해서 할 수 있다.

여러개의 구분자가 무엇인지 알고 있는 상태에서 문자열을 나누고 싶다면, |(or 연산자)를 활용한다.

str.split(/:|~|-/);

위와 같이 작성하면 :, ~, - 세가지를 기준으로 문자열을 구분할 수 있다.


만약 여러개의 구분자가 무엇인지 모르고 구분자 배열이 존재한다면, 정규표현식과 join() 함수를 활용한다.

new RegExp(`[${구분자배열.join('')}]`);

join(‘‘)는 배열의 요소를 공백없이 결합하고,
join()은 쉼표가 default 값이므로 ,를 사용해서 배열의 요소를 결합한다.
예를 들어, [’;’, ‘:’]라는 배열이 있을 때,
join(‘‘)의 결과는 ‘;:’
join()의 결과는 ‘;,:’ 가 되는 것.
따라서 이때는 join(‘‘)으로 배열의 요소를 결합해야 원치 않는 결과가 나오는 것을 피할 수 있다.

[]는 괄호 안의 문자들 중 하나를 의미한다. or 처리 묵음 이라고 생각하면 됨.

${} 안에는 변수나 표현식을 넣을 수 있다.


Categories:

Updated:

Leave a comment