정규식(Regular Expression)은 문자열을 검색하거나 변환하는 데 사용되는 강력한 도구입니다.
주니어 개발자라면 정규식을 처음 접하는 경우가 많을 것입니다.
이에 대해 알아보고자 이번 블로그에서는 정규식의 기본 개념과 실제로 어떻게 사용되는지에 대해 알아보겠습니다.
정규식이 무엇인가요?
- 정규식은 특정한 패턴을 나타내는 문자열입니다.
- 이를 사용하면 문자열 내에서 원하는 패턴을 찾거나 대체하거나 추출하는 등의 작업을 수행할 수 있습니다.
- 정규식은 다양한 프로그래밍 언어에서 사용할 수 있습니다.
정규식 대표 메타문법은?
정규식은 일반적으로 문자, 메타문자, 특수문자로 이루어져 있습니다. 문자는 그대로 일치하는 문자를 나타냅니다.
메타문자는 특수한 의미를 가지며, 특수문자는 일반 문자가 아닌 문자를 나타냅니다.
정규식에서 가장 많이 사용되는 메타문자는 다음과 같습니다.
` . ` (dot) | 어떤 문자 하나와 일치합니다. |
` * ` | 앞의 문자나 그룹이 0번 이상 반복됩니다. |
`+` | 앞의 문자나 그룹이 1번 이상 반복됩니다. |
`?` | 앞의 문자나 그룹이 0번 또는 1번 나타납니다. |
`^` | 문자열이나 라인의 시작을 나타냅니다. |
`$` | 문자열이나 라인의 끝을 나타냅니다. |
`[ ]` | 대괄호 안에 있는 문자 중 하나와 일치합니다. |
`( )` | 괄호 안에 있는 문자나 그룹을 나타냅니다. |
` \d ` | 숫자를 의미하는 메타문자입니다. [0-9]와 같은 표현입니다. |
` \w ` | 단어 문자를 의미하는 메타문자입니다. [a-zA-Z0-9_]와 같은 표현입니다. |
` \s ` | 공백 문자를 의미하는 메타문자입니다. [ \t\n\r\f\v]와 같은 표현입니다. |
역슬래시(' \ ')는 숫자, 글자, 공백을 지정할 수도 있지만, 메타문자를 이스케이프(escape)하는데도 사용됩니다.
즉, 일반적으로 특별한 의미를 가지는 메타문자를 그 문자 자체로 인식하도록 하는 역할도 합니다.
정규식 예제
예제 설명
이번 예제는 사용자로부터 입력받은 문자열에서 숫자만 추출하여 출력하는 예제입니다. 문자열에서 숫자를 추출하기 위해 정규식을 사용합니다. 추출된 숫자는 div 요소에 출력됩니다.
코드
우선, 사용자로부터 문자열을 입력받는 input 요소와 숫자 추출 버튼을 만들어줍니다.
import React, { useState } from 'react';
function App() {
const [text, setText] = useState('');
const [numbers, setNumbers] = useState('');
const handleTextChange = (event) => {
setText(event.target.value);
};
const handleExtractNumbers = () => {
const regex = /\d+/g;
const matches = text.match(regex);
const result = matches ? matches.join(', ') : '숫자가 없습니다.';
setNumbers(result);
};
return (
<div>
<input type="text" value={text} onChange={handleTextChange} />
<button onClick={handleExtractNumbers}>숫자 추출</button>
<div>{numbers}</div>
</div>
);
}
export default App;
useState 훅을 사용하여 text와 numbers 상태값을 관리합니다.
handleTextChange 함수는 input 요소의 값이 변경될 때마다 호출되어 text 상태값을 업데이트합니다.
handleExtractNumbers 함수는 숫자 추출 버튼을 클릭할 때 호출되며,
정규식을 사용하여 text 상태값에서 숫자를 추출합니다. 추출된 숫자는 div 요소에 출력됩니다.
위 코드에서 사용한 정규식 /\d+/g은 문자열에서 숫자를 추출하는 데 사용됩니다.
예제 정규식 /d+/g를 분해해보자!
- / : 정규식의 시작과 끝을 나타내는 구분자
- d : 숫자를 나타내는 메타 문자
- + : 앞에 나오는 문자나 그룹이 1회 이상 연속으로 반복됨을 나타내는 메타 문자
- /g : 전역 검색을 수행하기 위한 플래그
위 정규식은 "한 개 이상의 숫자"를 나타내는 패턴입니다. 이것은 다음과 같은 문자열을 숫자로 인식합니다.
- "1"
- "123"
- "9"
- "4567"
- 등등
따라서, 예제에서 이 정규식을 사용하면 문자열에서 모든 숫자를 추출할 수 있는 것입니다.
정규식의 활용
정규식은 문자열 검색, 치환, 추출 등 다양한 작업에 사용됩니다.
예를 들어 다음과 같은 상황에서 정규식을 사용할 수 있습니다.
- 이메일 주소, 전화번호 등과 같은 특정한 패턴을 가진 문자열을 검색하거나 추출합니다.
- 로그 파일에서 특정한 패턴을 가진 로그를 검색하거나 필터링합니다.
- 특정한 형식의 문서에서 특정한 패턴을 가진 단어나 문장을 검색하거나 추출합니다.
- 특정한 형식의 데이터를 추출하여 처리합니다.
결론
정규식은 문자열 처리에 효율적인 도구입니다.
이번 글에서는 정규식의 기본 개념과 문법, 활용 예제에 대해 알아보았습니다.
정규식은 처음 접하면 어렵게 느껴질 수 있지만, 많은 연습과 경험을 통해 능숙하게 사용할 수 있습니다.
주니어 개발자라면 정규식에 대해 꾸준히 공부하고 익숙해지는 것이 중요합니다.