Categories
가이드 학교와 기술

Notepad++에서 정규표현식으로 영어 기출 문장 검색하기

영어 공부 자료를 만들다 보면 좋은 예문이 필요할 때가 많은데, 자료만 준비되어 있다면 Notepad++ 정규식 검색 기능으로 쏙쏙 뽑아서 골라 쓸 수 있습니다. 물론 아이폰 사전이나 따옴표에 담아 구글 검색해서 추가 예문 찾는 게 어렵지 않지요. 하지만 모의고사나 대수능에 출제된 지문으로 범위를 한정하고 싶을 때는 어떻게 하는 게 좋을까요? 또한 찾고 싶은 대상이 간단한 단어가 아니라, “앞에 If로 시작하고 4개 단어 범위 안에 -ed로 끝나는 동사가 등장하는 그런 문장”이라면?

△ Notepad++ 편집 화면 (출처: 홈페이지)

Notepad++은 일종의 고급 메모장으로, 복잡한 문자열을 검색하고 싶거나 세로 방향으로 텍스트 긁기, 매크로 작업, 마크다운 문서 작성을 쉽고 빠르게 하고 싶을 때 유용한 텍스트 편집 도구입니다. 코딩하시는 분들은 요즘 VS 코드 에디터가 대세라지만 여전히 가볍고 빠른 오프라인 텍스트 도구로서 Notepad++에 머무르는 사람도 많답니다.

특히 정규식(Regular Expression)은 프로그래머가 아니시더라도 배워두면 상당히 유용합니다. 구글 설문지를 만들 때도 쓸 수 있어요. 또는 오늘처럼 영어 텍스트 더미를 뒤져서 원하는 문자열을 찾아낼 때 유용하게 사용할 수 있습니다! 다량의 텍스트 자료를 모은 후, 원하는 모양의 문자열을 검색해 봅시다!

1. 모의고사 기출 문제 다운로드

우선 여러분이 국어, 영어 선생님이라고 가정했을 때 자료를 검색하기 전에 양질의 자료를 수집하는 작업이 필요합니다. 고등학교 영어 교과에서 “기출”이라고 하면 보통 전국 단위 모의고사에서 출제된 지문이나 대수능 문제를 가리키겠지요. 이 과년도 자료를 확보하는 것은 어렵지 않습니다.

1.1. 공식 소스

평가원 기출문제 게시판

  • 대수능 기출, 평가원 주관 6/9월 모의고사 기출
  • ❤️목록에서 파일아이콘만 클릭해서 즉시 받기 가능
  • ☹️교육청 모의고사 기출자료 없음

EBS 기출문제 다운로드

  • 학년별 기출문제 통합 다운로드(교육청, 평가원)
  • ❤️원하는 시험과 과목, 연도 범위 골라서 필터링
  • ☹️회원가입 필요

서울교육청 학력평가자료 게시판

  • 시도교육청 기출문제 다운로드
  • ❤️회원가입 필요없음. 압축파일 형태로 제공
  • ☹️평가원 자료 없음. 듣기파일 제외하고 받기 불가능

1.2. 비공식 소스

교사가 개인적으로 사용할 기출문제 자료를 모을 때, 한 가지 문제가 되는 게 바로 자료의 형식입니다. 물론 .PDF.hwp로 받아도 문서 내용까지 검색이 불가능한 건 아니지만 더 빠르고 편리하게 여러 파일을 뒤지기 위해서는 텍스트 파일을 확보하는 게 좋아요. 정답은 없습니다만, 가급적 .PDF 파일에서 텍스트를 추출하기보다는 처음부터 텍스트 자료를 얻을 수 있다면 더 좋을 겁니다.

리로스쿨

  • ❤️교육콘텐츠를 시스템 안에서 텍스트 자료로 제공하고, 브라우저에서 바로 복사할 수 있습니다. 필터링도 가능해서, 가령 특정 연도의 학력평가 자료에서 듣기평가는 제외하고 나머지만 병합해 내려받을 수 있습니다.
  • ☹️학교가 리로스쿨 서비스를 사용하지 않으면 이용하기 어렵다는 게 단점
  • ☹️아무래도 손이 가는 작업이라 그런지 바로바로 올라오는 편은 아닙니다

출판사 선생님방 (씨뮬, 자이스토리, 마더텅)

  • 기출 문제 모음 교재를 제작하는 업체들이 교재 원고 파일을 교사를 위해 제공하는 경우가 있습니다.
  • ❤️가령 2015~2020 대수능, 학력평가 33회분 문제를 모두 모은 시중의 문제집 원고에 해당하는 파일을 .hwp 로 쉽게 확보할 수 있어요. 시간과 수고를 덜 수 있습니다.
  • 어법 문제만 모아두거나 한 경우도 있어, 출판사의 편집 노력이 들어간 경우가 많으니 재배포해서는 안 되겠습니다.
  • ☹️단점은 학교 교사가 아닌 경우 접근이 어려울 수 있다는 것과, 결국 출판사에 어느 정도 개인정보를 제공하게 된다는 것.

2. 텍스트 자료 폴더에 정리

이제 모든 기출 문제를 모았다면 이를 폴더에 정리해 봅시다. 연도별(시간순), 학년별(난이도)에 따라 어떤 구조를 갖춰 모을 것인지는 자료의 활용 목적에 따라 달라지겠죠. 보통 비슷한 난도의 문제 수준을 계속 제공하고 싶으면 학년별 자료를 모아두면 좋겠고, 상관없다면 한 폴더에 왕창 모아도 좋을 것이고요. 아니면 연도별 자료를 모아뒀다가 필요에 따라 원하는 자료만 다시 한 폴더로 복사해서 그 폴더 안에서 검색을 수행하면 될 겁니다.

△ 학년별 자료를 폴더에 모으고, 상위 폴더에서 통합 검색한다

전 폴더를 다단계로 만드는 걸 별로 선호하지 않아서, 하나의 폴더에 몰아넣는 편입니다.

기출 자료 파일명 정리의 예
△ 기출 자료 파일명

파일명을 일관된 규칙으로 작성해서 연도별, 학년별 자료를 확보하였습니다.

리로스쿨은 본문과 해설을 통합한 텍스트를 (고맙게도) 제공합니다. 문항에 출처가 반복해 표시되어 있으니 작업하기 참 좋았네요.

△ 모의고사 지문, 해설, 정답, 출처가 함께 표시

3. Notepad++ 검색 연습

Notepad++ 프로그램은 홈페이지 다운로드 페이지에서 가장 최신 배포 버전을 내려받아 설치하면 됩니다. 설치 방법은 여기를 참조.

3.1. Notepad++ 기본 검색 기능

우리는 지금 아주 많은 .txt 파일을 모아 검색하려는 계획을 갖고 있기 때문에, Notepad++ 의 기본적인 검색 기능을 익힐 필요가 있겠습니다. 현재 보고 있는 문서만 검색할 때는 주로 아래의 단축키를 사용합니다.

찾기(Find)Ctrl + F
바꾸기(Replace)Ctrl + H

기본적으로 “new h”를 검색하면 “new high-protein”, “New host”가 모두 검색되게 되며, Enter키를 치면 문서 앞에서 뒤로 가면서 하나씩 검색지점을 보여줍니다. 이건 뭐 기본 메모장 기능과 동일합니다.

△ Notepad++ Find

몇 가지 옵션이 더 보이는데요.

  • Backward direction : 체크하면 거꾸로 올라가면서 다시 훑습니다.
  • Match whole word only : 단어 단위로 완전히 일치하는 결과만 보여줍니다. “visit”으로 검색했을 때 “visiting”은 안에 “visit”를 포함하고 있지만 “visiting”이라는 단어가 “visit”와 완전히 일치하지 않으므로 제외됩니다.
  • Match case : 대소문자 구분입니다. 체크하면 “new”로 검색했을 때 “New”는 제외됩니다.
  • Wrap around : 파일의 맨 마지막 검색 결과에 도달한 후에 다시 처음으로 돌아가서 반복해 결과를 보여줍니다.
  • In selection : 현재 마우스로 선택한 영역에 한정해서 검색하게 됩니다.
  • Count : 현재 조건에서 검색 조건에 매치되는 수를 보여줍니다.

3.2. Notepad++ 넓은 범위에서 검색 결과 모아 보기

결과 텍스트만 추출할 수도 있습니다. 가령 “and o”를 검색해서 ‘Find All in Current Document’를 누르면 해당 조건에 맞는 라인이 아래와 같이 추출됩니다.

이제 이 라인만 복사해서 별도의 문서에 붙여넣으면, 해당 검색어가 포함된 텍스트만 얻을 수 있는 것이죠. 아주 방대한 문서에서 특정 검색어만 포함하는 줄/문장을 빠르게 필터링해서 다시 모으고 싶을 때 유용합니다.

이 범위를 더 확장하여, 현재 열려있는 문서 범위에서 찾고자 할 때 ‘Find All in All Opened Documents’ 버튼을 사용하면 됩니다.

This image has an empty alt attribute; its file name is image-66.png

가령 저는 수백 개의 기출 텍스트 파일을 한 폴더에 보관하고 있는데, “고1″에 해당하는 파일만 10개 열어두고 그 안에서만 검색할 수 있는 것이죠.

  • “고1″을 제목에 포함하는 파일만 골라서 최근 모의고사 10회분의 파일을 로드하였습니다.
  • 10개의 파일이 현재 탭으로 구분돼 로드된 상태입니다.
  • Ctrl + F 를 누르고 “there is”를 검색어로 입력합니다.
  • 그리고 ‘Find All in All Opened Documents’ 버튼을 눌러 열려 있는 10개의 모든 문서 안에서 이 검색어와 일치하는 결과를 찾습니다.

위와 같은 화면을 보실 수 있는데요. 아래 패널에 여러 파일에서 찾은 검색 결과가 보입니다. 어떤 파일의 몇 번째 라인에 일치하는 결과가 있는지 보이네요. 예를 들어 2018년 9월 고등학교 1학년 모의고사의 Line956에 세 개의 검색 결과가 있는 걸로 보아, 한 지문 안에 “there is”가 세 번 등장한다고 쉽게 예상할 수 있습니다. 아래 패널의 라인을 더블 클릭할 때마다 위 패널은 해당 파일/위치로 이동합니다.

사실 이 정도 환경만 갖춰두면 아주 넓은 범위의 텍스트에서 원하는 내용이 들어간 문장이나 지문을 빠르게 뽑아낼 수 있죠. 가령 저는 위 자료를 통해 아래와 같이 기존에 출제되었던 문장의 형식을 얻게 되고, 이것이 공부할 만한 것인지 판단해서 활용하게 됩니다. 지금 이 문장은 “a complex chain of events”가 단수인지 복수인지 구분하는 게 중요해 보이지 않아 활용하기 어려워 보이네요.

(18.9고1학평) There is a complex chain of events that all contribute to the result.

3.3. Notepad++ 폴더 안 전체 파일 검색

현재 열려 있는 파일이 아니라 열지 않은 파일을 대상으로 검색 범위를 넓힐 수 있습니다.

Find in Files

‘Find in Files’ 메뉴는 쉽게 말하면 폴더 전체 검색입니다. 기본 찾기 창에서 별도의 탭으로 해당 메뉴에 접근할 수 있고, 단축키는 Ctrl + Shift + F 입니다.

몇 가지 옵션이 보입니다.

  • Follow current doc : 지금 열어서 보고 있는 파일이 속한 디렉토리를 뒤집니다. 즉, 먼저 a.txt 파일을 열어서 보고 있다가, ‘Find in Files’를 통해 현재 텍스트 파일이 담겨 있는 폴더에 있는 모든 파일을 검색하도록 합니다.
  • In all sub-folders : 하위 폴더까지 포함해 검색합니다.
  • In hidden folders : 숨김 폴더까지 검색합니다.

가령, 최근 모의고사 파일에서 검색해도 나오지 않을 때, 이미 모의고사 기출 파일을 같은 폴더에 잔뜩 모아두었다면 폴더로 범위를 확장해 다른 파일에서도 검색할 수 있는 것입니다. 수행하면 모든 파일을 열면서 폴더 전체의 파일을 뒤지게 됩니다.

Find in Projects

이것은 프로젝트 패널을 사용하는 사용자를 위한 기능입니다. ‘View’ > ‘Project Panel 1’을 열어서 해당 워크스페이스(Workspace)에 여기저기 흩어져있는 파일을 소속시킨 후, 그 프로젝트 범위 내에서 검색하도록 하는 것이죠. 특정 파일을 하나의 디렉토리에 모아두기 힘들 때 유용하겠고, 또 파일이 이미 하나의 디렉토리에 있더라도 ‘고1모음’, ‘대수능모음’, ‘최근5년모음’ 등등 원하는 프로젝트를 따로 구성해 놓으면 필요에 따라 검색 범위를 빠르게 조정하면서 찾을 수 있게 됩니다. 저는 잘 사용하지 않습니다…

△ 작업공간에 프로젝트 – 파일/폴더를 추가하면 됨

4. Notepad++ 정규식 활용법

정규식을 활용하면 검색의 깊이와 범위가 더욱 깊고 넓어집니다. Notepad++ 의 정규식 사용 공식 가이드 문서도 있는데 초보자에게 좀 어렵네요. 처음이신 분은 sooopd님의 글도 추천합니다. 귀찮은 분들을 위해 저도 나름 정리를 해보았습니다.

4.1. 정규식이란 무엇인가?

문자를 식으로 나타내는 규칙이라고 생각하면 좋습니다. “가”로 시작하고 “어”로 끝나는 말이 있는데, 전체 글자가 세 글자인 그런 단어를 찾고 싶다고 해볼까요? 그럼 보통 가0어와 같이 써서 친구에게 힌트를 주고 싶을 겁니다. 이렇게 이 때 0 이라는 기호는 반드시 한 자리를 차지하는 어떤 글자를 나타내고 있습니다. 정규식은 이렇게 기호를 사용해서 다양한 문자열을 조건화합니다.

실제로 위와 같이 “가.어”라고 검색하면서 찾기 모드를 정규식 모드(Regular expression)로 설정하면, 실제 본문에서 “가.어”라는 문자열을 찾는 게 아니라 “가”로 시작하고, 가운데 어떤 문자이든지 한 글자(.)가 들어가며, “어”로 끝나는 문자열을 검색하게 됩니다.

그럼 아래와 같이 세 개의 결과가 나왔는데요. “.. 가 어법에 맞다”가 검색에 포함된 것은 “가(공백)어” 또한 검색하고자 하는 규칙에 부합하기 때문입니다. . 은 공백 문자도 인정하는 것이지요. 이런 메타문자 활용 규칙을 이해하면 복잡한 조건을 걸어서 평소에 찾기 어려운 문장이나 단어를 찾아낼 수 있게 됩니다.

4.2. 정규표현식 예

메타 문자
(Meta
Character)
설명
.마침표(.)는 무엇이든지 자리를 차지하는 한 글자를 뜻합니다. 공백 또한 포함되며, 줄바꿈은 제외합니다.
[ ]대괄호 기호([])로 문자 집합을 만들 수 있습니다. 여러분은 이 괄호 안에 있는 것들 중에 하나를 선택합니다. [abc]는 a 또는 b 또는 c를 말합니다. [a-d]는 a 또는 b 또는 c 또는 d를 말합니다.
[^]대괄호로 집합을 만들면서, 특정 문자를 제외한 선택을 하라는 뜻입니다. [^ab]는 문자 중에서 a와 b는 제외되며, 그 외의 집합에서 하나 고르라는 뜻입니다.
*별표는 그 앞에 있는 문자를 0회 또는 1회 이상 반복할 수 있다는 뜻입니다. 12* 라고 쓰면, 1은 존재하고, 2는 0회 반복해도 되고, 여러 번 반복해도 됩니다. 따라서 1, 12, 122 등이 모두 조건에 부합합니다.
?물음표는 그 앞의 문자가 있거나 없거나 둘 중 하나라는 뜻입니다. 12? 라고 쓰면, 1은 이미 존재하고, 2는 있어도 되고 없어도 됩니다. 따라서 1, 12 가 조건에 부합합니다.
{n,m}중괄호를 사용하여 최소, 최대 반복 범위를 정합니다. 3{2, 4}라고 적으면 3이라는 문자가 최소 2회, 최대 4회 반복된다는 뜻입니다. 따라서 33, 333, 3333 이 해당합니다.
(xyz)소괄호로 묶으면 떨어질 수 없는 하나의 그룹으로 처리합니다. (xyz){2,4}는 (xyz)라는 이 그룹 전체가 최소 2회, 최대 4회 반복된다는 뜻이 됩니다. 따라서 xyzxyz 또는 xyzxyzxyz 또는 xyzxyzxyzxyz 가 해당합니다.
|파이프 문자는 “또는”에 해당합니다. a|b 는 a 또는 b입니다.
\백슬래시 문자로 특정 문자를 그대로 표현합니다(이스케이프). 가령 . 문자는 모든 문자를 나타내는 기호이지만, \. 라고 표시함으로써 “.” 기호를 그대로 검색할 수 있게 됩니다.
^괄호 밖에 있는 ^ 문자는 인풋의 시작을 나타냅니다. the를 검색하면 단어 중간에 있는 문자열까지 모두 찾지만, ^the를 검색하면 단어의 시작 부분이 the인 것만 찾습니다.
$마찬가지로 인풋의 끝을 표현합니다.

4.3. 정규표현식 검색의 예

검색어검색 결과 (밑줄 표시)비고
theThe fat cat sat on the mat.the 그대로 검색
TheThe fat cat sat one the mat.The 검색
.arThe car parked in the garage.. = 공백 포함 임의의 문자 1개
[Tt]heThe car parked in the garage.[Tt] = T와t 중에 하나
ar\.A garage is a place to park a car.\.는 실제 마침표 “.”기호를 의미
[^c]arThe car parked in the garage. [^c]는 c를 제외한 한 글자
[a-z]*The car parked in the garage. 소문자의 나열에 해당함.
\s*cat\s*The fat cat sat on the concatenation.\s는 공백문자를 의미함.
cat 앞뒤에 공백이 있거나 없음
c.+tThe fat cat sat on the mat. +는 최소 1회 이상을 의미함.
c와 t 사이에 문자가 1회 이상
[T]?heThe car is parked in the garage.?는 있어도 되고 없어도 되는 것
The 또는 he를 검색
[0-9]{2,3}The number was 9.9997. 연속되는 숫자 2~3개
[0-9]{2,}The number was 9.9997.연속되는 숫자 2개 이상
[0-9]{3}The number was 9.9997.연속되는 숫자 딱 3개
(c|g|p)arThe car is parked in the garage.c또는g또는p 다음에 ar 오는 것
(T|t)he|carThe car is parked in the garage.“The” 또는 “the” 또는 “car”
^(T|t)heThe car is parked in the garage.The 또는 the로 시작하는 문자열
(at\.)$The fat cat. sat. on the mat.“at.”로 끝나는 문자열

5. Notepad++ 에서 정규식으로 영어 문장 검색

이제 활용을 해봅시다. 고등학교 수업에서 등장하는 구문이나 어법 사항을 정규식을 사용해서 기출 텍스트에서 검색해 보겠습니다.

보통 어떤 좋은 문제를 본 다음에, 그와 비슷한 구문을 뒤져서 찾아내고 싶어집니다.

5.1. since 주어 (동사/준동사)

교재에 다음과 같은 기출 문제가 제시되었다고 합시다. 학생들에게 비슷한 문제를 추가 제공해주고 싶은데, 과거 기출되었던 문장을 그대로 이용하거나 응용하고 싶습니다.

Don’t wash the broccoli before storing it since moisture on its surface encourages / to encourage the growth of mold.

<2009 수능>

접속사 since(~이므로) 뒤에 동사가 있어야 하므로 “to encourage”가 올 수 없음을 이해하는지 묻고 있습니다. 주어가 “moisture on its surface”로 비교적 뚱뚱?해서 동사 자리 물어보기 좋은 문장이네요.

이런 문장 기출 텍스트에서 또 찾을 수 있을까요? “since xxxx on xxxxx 동사” 이런 순서이면 좋을텐데요.

위 예문에서는 “moisture” 한 단어였지만 꼭 그러리라는 보장은 없으니, 공백을 포함한 3~10개 정도 문자가 “since” 다음에 나오도록 .{3,10}로 표현해 보겠습니다. 무한정 잡으면 문단 단위로 뽑힐테니까요.

그리고 전치사는 “on” 외에도 in, of, for를 허용하도록 하지요. 그룹으로 묶어서 (on|in|of|for)로 표현해보겠습니다.\s는 공백입니다.

이제 Notepad++ 에서 Ctrl+Shift+F를 눌러 기출 문제 텍스트를 모아둔 폴더 전체에서 아래와 같이 검색합니다. “since 한 칸 띄고 3~10개 철자 정도의 무언가 들어간 다음, on,in,of,for와 같은 단어가 나온 다음에 한 칸 공백이 등장하는 그런 문자열을 찾아주세요.”

since\s.{3,10}(on|in|of|for)\s

아래와 같이 많은 매치가 보이네요.

쓸 만한 놈을 골라보겠습니다.

It was difficult for us especially since some of the other shops in our area were really busy.

<2005.6 고3 학평>

위 문장은 뒤의 were 부분을 준동사로 바꿔서 물어보고 싶네요. 그러나 썩 마음에 들지는 않습니다.

I’d like to remind you that rooms A1, A2, and A3 in the Morse building have been kept open from 6:00 PM to 11:00 PM on weekdays since the end of last semester.

<2010.3 고3 학평>

위 문장은 since가 전치사로 쓰였네요. 원하는 문장이 아닙니다.

That definition seems too narrow, however, since works of art and natural objects may interest us in other ways than by being beautiful.

<2015.9 고3 학평>

오 좋네요. 뒤의 may를 빼고 다음과 같이 출제하고 싶습니다. 맥락상 전통적인 예술의 정의가 좁다는 이야기가 등장하는 부분이로군요.

“The traditional definition of aesthetics seems too narrow since works of art and natural objects interest / to interest us in other ways than by being beautiful.”

이렇게 since 접속사 이후에 등장하는 동사 자리를 묻는 문제를 제작하게 되었습니다. 기출 문제이므로, 이를 응용해서 추가 문제도 제작할 수 있습니다.

“The definition of xxxx seems too narrow since xxxx 동사/준동사 ….. “

기출 텍스트의 품질과 구조를 유지하면서, 추가 연습 문제를 제공하는 겁니다.

5.2. that, xxxx, (준동사/동사)

다음 문장입니다.

But knowing and not telling does not give him that feeling of “superiority that, so to say, latently contained in the secret, fully actualizing itself only at th emoment of disclosure.”

<2019.9 고3평가원>

관계대명사 that 이후에 등장하는 동사를 찾는 문제입니다. 콤마(,) 사이에 있는 수식어구를 건너뛰고 that feeling 에 대한 현재 사실을 서술할 수 있도록 actualizing을 actualizes로 바꿔야 하는 걸 아는지 묻고 있습니다.

이런 걸 또 찾으려면 그냥 “actualizing”으로 검색하는 건 좋지 않겠지요. “that,”와 같이 관계대명사 이후에 삽입 어구가 뒤따르는 그런 문자열을 찾아서 살펴볼 필요가 있습니다. “that,”가 등장하고, 공백이 나온 다음, 마침표는 제외한 영어 소문자나 띄어쓰기가 어느 정도 길이로 이어진 뒤에, 다시 콤마(,)가 등장하는 부분을 잘라내서 찾아볼까요? 너무 짧거나 길지 않게 20~200 정도 길이로 잡아봅니다.

(that, )[a-z\s]{20,200},

제가 가진 자료에서는 41개가 검색되네요. 괜찮은 놈을 찾아봅니다.

As originally planned, the barrier was to be a solid dam that, by drastically restricting tidal flows, would have destroyed much of the marine environment on the Eastern Scheldt.

<2009.9 고3평가원>

위 문장이 좋아보이네요. 지문을 읽어보니 The barrier at the River Scheldt에 대한 내용인데, “flows”가 명사라서 애들이 헷갈릴 것 같습니다. 조금 고쳐서 출제하면 좋겠어요.

The barrier at the river is a solid dam that, by drastically restricting tidal flows, destroying much of the marine environment on the East Sea.

이렇게 현재형으로 고쳐서 준동사와 본동사를 구별하는지 묻는 문제로 바꿔봅니다.

역시, 이 문장을 버리지 말고 그 틀과 표현을 그대로 재활용해서 추가 문제를 생산할 수 있을 겁니다.

“The xxx of xxxx is a xxxx that, xxxxx, (동사/준동사) xxx.”

5.3. that / what

that 과 what 둘 중에 하나 고르는 문제는 단골손님이지요. “that / what” 또는 “what / that” 문자열을 그대로 검색하면 기존에 이 두 개 중 하나를 고르도록 출제한 문항을 쉽게 찾아서 볼 수 있습니다.

(that / what|what / that)

그런데 8 개만 나오네요? 더 많을 거 같은데 … 가지고 있는 자료를 보니 “that / what” 으로 쓴 자료가 있고, “that/what”과 같이 중간 공백이 없는 텍스트가 있네요. 모두 놓치지 않도록 하려면 어떻게 할까요?

(that(/|\s/\s)what)|(what(/|\s/\s)that)

이렇게 “that/what”, “that / what”, “what/that”, “what / that”을 모두 포함하도록 정규식을 만들어 검색하면 한 번에 찾을 수 있게 됩니다. 이제 마음에 드는 문장을 잘라서 학생들에게 제공하도록 합시다.

It’s what goes on inside your head that makes all the difference in how well you will convert what/that you hear into something you learn.

<2018.6 고2학평>

5.4. It takes {시간, 노력, 돈} + (for 목적격)+ to-v

이번에는 위와 같은 구문을 찾고 싶습니다. 어떤 단어가 시간, 노력, 돈을 뜻하는지 생각해서 검색하기는 힘들겠죠? takes도 took, taken 등으로 바꿔서 등장할 수 있습니다. ‘for 목적격’은 있을 수도 있고 없을 수도 있습니다. 정답은 없고 해보면서 검색된 결과가 너무 많으면 더 범위를 좁힐 수 있는 식을 찾으면 됩니다.

{최소, 최대} 값을 부여해도 되지만, \b 메타 문자를 사용해보죠. \b는 단어의 경계를 의미한다고 이해하시면 됩니다. 저는 ‘for 목적격’이 꼭 등장했으면 해서 생략하지 않겠습니다. 제가 초보라.. 하다보면 더 짧고 깔끔한 식을 찾아가게 될 겁니다. 고수님들이 이 글 보시고 조언 좀 주셨으면..

it takes.+\bfor\b.+\bto\b

누더기처럼 위와 같이 써서 찾아보니 11 개가 나오네요.

마음에 드는 걸 찾았습니다.

For example, when you learn a new word it takes several repetitions at various intervals for the word to be mastered.

<2015.11 고2학평>

5.5. Not only 도치구문

We not only lost our money, but we were nearly killed.
Not only did we lose our money, but we were nearly killed.

위 문장을 교재에서 공부했습니다. 기출 텍스트에서 비슷한 사례를 더 찾아보고 싶네요.

not only (do|does|did|was|were|is|are|has|have|should|can|will)

이렇게 생각나는 걸 잔뜩 넣어보았어요. 13 개나 찾았네요.

By some estimates, music based on oral tradition had previously seldom been performed for more than one or two generations. By contrast, with the coming of records not only were the “classics” preserved, but formerly ephemeral “hits” could now survive as “oldies.”

<2016.3 고3학평>

이렇게 관련된 문장을 금방 찾아 학생들에게 제시하거나, 고쳐서 추가 문제를 만들 수 있습니다.

5.6. be used to ~ing

하나 더 해볼까요? 위와 같은 구문을 찾아보겠습니다.

(is|was|were|are|been) used to \w+ing

위와 같이 공백을 \s로 처리하지 않고 그냥 편하게 한 칸 띄워서 입력해도 Notepad++ 에서 잘 인식됩니다.

They felt there was something wrong with Pacino’s voice because it wasn’t what they were used to hearing.

<2011.6 고2학평>

그런데 이 구문은 사실 ~ing 자리에 동사를 넣는 구문과 차이를 묻는 방식으로 출제될 때가 많지요. 그래서 “be used to”만 검색한 다음, 이것을 거꾸로 오답이 되도록 고쳐서 문제로 출제하면 좋을 거 같아요.

(is|was|were|are|been) used to

괜찮은 문장을 하나 건졌어요.

Mathematics was used to portray the essential form of objects in perspective, as they appeared to the human eye.

<2005 대수능>

이걸 고쳐서 아래와 같이 문제로 만들어서 애들에게 던져보고 싶어요.

Mathematics was used to portraying the essential form of objects in perspective, as they appeared to the human eye.

마치며

어떤가요? 지금까지 아주 많은 기출 문제 텍스트 파일(.txt)을 확보해서 한 폴더에 모아두고, Notepad++ 의 강력한 정규식 검색 기능을 이용해서 원하는 문자열을 추출하는 방법을 소개했습니다.

개발자님들은 너무 쉽다고 생각하실 수도 있지만, 정규식을 평소에 사용하지 않는 일반 선생님들도 이 글에서 아이디어를 얻으셨으면 좋겠습니다. 사실 꼭 영어가 아니라 다양한 맥락에서 문자 데이터를 다루고 있다면 응용이 가능할 듯 합니다.

제 글에 틀린 부분을 발견하시거나 더 좋은 식이나 방법을 조언해주실 분들은 댓글 남겨주세요!

저도 어서 정규식을 능숙하게 사용할 수 있으면 좋겠습니다!

(2021년 8월)

6 replies on “Notepad++에서 정규표현식으로 영어 기출 문장 검색하기”

^_^ 고맙습니다.
저도 어서 사람들도 만나고 재밌는 얘기도 주고받을 수 있는 날이 오면 좋겠네요.
선생님도 건강하게 한 학기 시작하세요!

와우~쌤 구경하러 왔다가 유용함에 댓글씁니다^^

안녕하세요! 좋은 정보 너무 감사합니다. 딱 찾고 있던 내용이었어요. 혹시 리로스쿨에서 txt로 문제 다운은 어떻게 받는지 알 수 있을까요? 계속 시도해봤는데 방법을 못찾겠네요ㅠㅠ 알려주시면 정말 감사하겠습니다!

안녕하세요?
혹시 아예 안 보이시면 학교 관리자가 메뉴를 감춰둔 것 같으니 문의해보시기 바라고요,
“교육콘텐츠 > 수능학평 기출문제” 메뉴가 이미 보이신다면,
특정 연도-월 기출문제를 불러들여 “인쇄용 시험지 해설삽입”을 선택하고 “실행”을 클릭하면 새 창이 뜹니다.
그 창에서 복사하는 방식으로 저는 자료를 확보했네요.

아쉽지만 원클릭으로 모든 자료를 내려받는 기능은 없는 거 같아요.

아! 하나씩 다 다운받으셨군요! 감사합니다^^

Leave a Reply

Your email address will not be published.