JavaScript 정규 표현식 소개
정규 표현식은 복잡한 검색 및 치환(또는 단순 검색)을 위한 명령어입니다. 매우 흥미로운 작업을 할 수 있게 해주지만, 안타깝게도 익히기 상당히 어렵습니다.
JavaScript에는 정규 표현식을 다루기 위한 여러 메서드가 있습니다. 우리는 그중에서 replace 메서드를 예로 들어 살펴보겠습니다. 여러분은 이미 이 메서드에 친숙할 것입니다: 첫 번째 매개변수는 무엇을 바꿀지, 두 번째 매개변수는 무엇으로 바꿀지를 받습니다. 그리고 이 메서드는 치환이 이루어질 문자열에 적용됩니다:
'bab'.replace('a', '!'); // 'b!b'를 반환함
이 메서드의 첫 번째 매개변수로 단순 문자열이 아닌 정규 표현식을 전달할 수 있습니다. 정규 표현식은 슬래시 / 안에 위치한 명령어들의 집합입니다. 이 슬래시들을 정규 표현식의 구분자라고 부릅니다.
정규 표현식 자체는 두 가지 유형의 문자로 구성됩니다: 문자 그 자체를 나타내는 문자와, 특수 문자라고 불리는 명령어 문자입니다.
문자와 숫자는 문자 그 자체를 나타냅니다. 다음 예시에서 우리는 정규 표현식을 사용하여 문자 'a'를 !로 바꿀 것입니다:
'bab'.replace(/a/, '!'); // 'b!b'를 반환함
반면 마침표는 특수 문자이며 어떤 문자든을 나타냅니다. 다음 예시에서 우리는 다음과 같은 패턴으로 문자열을 찾을 것입니다: 문자 'x', 그다음 아무 문자, 그다음 다시 문자 'x':
'xax eee'.replace(/x.x/, '!'); // '! eee'를 반환함
구분자 뒤에는 수식자를 쓸 수 있습니다. 이는 정규 표현식의 일반적인 속성을 변경하는 명령어입니다. 예를 들어, g 수식자는 전역 검색 및 치환 모드를 활성화합니다. 이 수식자가 없으면 정규 표현식은 첫 번째 일치 항목만 찾지만, 있으면 모든 일치 항목을 찾습니다.
다음 예시에는 g 수식자가 지정되지 않아 정규 표현식이 첫 번째 일치 항목만 찾습니다:
'aab'.replace(/a/, '!'); // '!ab'를 반환함
이제 정규 표현식은 모든 일치 항목을 찾습니다:
'aab'.replace(/a/g, '!'); // '!!b'를 반환함
다음 문자열이 주어졌습니다:
let str = 'ahb acb aeb aeeb adcb axeb';
다음 패턴으로 문자열 'ahb', 'acb', 'aeb'를 찾는 정규 표현식을 작성하세요: 문자 'a', 아무 문자, 문자 'b'.
다음 문자열이 주어졌습니다:
let str = 'aba aca aea abba adca abea';
다음 패턴으로 문자열 'abba', 'adca', 'abea'를 찾는 정규 표현식을 작성하세요: 문자 'a', 2개의 아무 문자, 문자 'a'.
다음 문자열이 주어졌습니다:
let str = 'aba aca aea abba adca abea';
'adca'를 잡아내지 않으면서 'abba'와 'abea' 문자열을 찾는 정규 표현식을 작성하세요.