정규 표현식(Regular Expression)란?

문자열의 패턴을 기호를 조합하여 나타내는 표기법. .은 임의의 한 문자, *는 직전 요소의 0회 이상 반복, ^와 $는 줄의 시작과 끝, [abc]는 대괄호 안의 어느 한 문자를 나타내며, grep, sed, awk 등의 명령이나 많은 프로그래밍 언어에서 검색이나 치환에 쓴다. grep의 기본 정규 표현식(BRE)과, +나 ?나 |를 그대로 쓸 수 있는 확장 정규 표현식(grep -E, ERE)은 기호의 취급이 일부 다르다. 셸의 와일드카드(*.txt 등)와는 다른 것이며, *의 의미도 다르다.

일본어 명칭: 正規表現

정규 표현식(Regular Expression)은(는) 컴파일러, Linux와 커맨드 라인 기초 등 2개 분야의 연습 문제 4개에 나와요.

분야: Linux와 커맨드 라인 기초

도전해 보기: 정규 표현식(Regular Expression) 관련 문제

컴파일러의 어휘 분석의 역할로 올바른 것은?

  1. A프로그램의 문장이 언어의 문법에 맞는지를 트리 형태로 확인한다
  2. B소스 코드의 문자열을 식별자나 연산자 등의 토큰으로 나눈다
  3. C변수의 타입이 맞는지, 정의되지 않은 이름을 사용하지 않았는지를 검사한다
정답과 해설 보기

정답: B. 소스 코드의 문자열을 식별자나 연산자 등의 토큰으로 나눈다

어휘 분석은 컴파일러의 첫 단계로, 예를 들어 「count = count + 1;」을 식별자 count, 기호 =, 식별자 count, 기호 +, 숫자 1, 기호 ; 라는 토큰으로 나눕니다. 공백과 주석도 여기서 제거됩니다. 토큰의 규칙은 정규 표현식으로 쓸 수 있으므로 유한 오토마톤으로 빠르게 처리할 수 있습니다. 문법에 맞는지를 트리 형태로 확인하는 것은 다음 단계인 구문 분석, 타입이나 이름을 검사하는 것은 의미 분석의 역할입니다.

어휘 분석에서 토큰을 구별하는 규칙을 나타내는 데 자주 사용되는 것은?

  1. A부동소수점의 반올림 규칙
  2. B정규 표현식과 이를 처리하는 유한 오토마톤
  3. C캐시 교체 규칙
정답과 해설 보기

정답: B. 정규 표현식과 이를 처리하는 유한 오토마톤

식별자는 「영문자로 시작하고 영숫자가 이어진다」, 숫자는 「숫자가 1개 이상 이어진다」와 같이 토큰의 종류는 정규 표현식으로 간결하게 쓸 수 있습니다. 정규 표현식은 유한 오토마톤(상태의 수가 유한한 기계)으로 변환할 수 있으며, 문자를 하나 읽을 때마다 상태를 옮겨 가기만 하면 입력 길이에 비례하는 시간으로 토큰을 잘라낼 수 있습니다. 그래서 어휘 분석기는 정규 표현식으로부터 자동 생성하는 도구로 만들어지는 경우도 많습니다. 반올림이나 캐시의 규칙은 어휘 분석과 관계가 없습니다.

해설 속 정규 표현식(Regular Expression)

정규 표현식(Regular Expression)이(가) 나오는 문제 (4)

  1. 컴파일러의 어휘 분석의 역할로 올바른 것은?
  2. 어휘 분석에서 토큰을 구별하는 규칙을 나타내는 데 자주 사용되는 것은?
  3. 많은 프로그래밍 언어의 문법을 나타내는 데 사용되며 구문 분석의 기초가 되는 문법의 종류는?
  4. 위의 조작에서 마지막 grep이 출력하는 줄로 올바른 것은?

관련 용어

어휘 분석(Lexical Analysis) 구문 분석(Parsing) grep 셸(Shell) 슈퍼유저(Superuser) 시그널(Unix 시그널) 심볼릭 링크(Symbolic Link) 입출력 리다이렉션(I/O Redirection) 파이프(|) 파일 권한(퍼미션)

용어집으로 돌아가기