728x90
반응형

패턴 인식 5에서는 한글이 포함된 줄을 골라내는 패턴을 살펴봤다.

 

이번엔 실전 문제 하나 해보자.

 

'동사를 알면 죽은 영어도 살린다' 개정판을 쓸때 써먹었던 패턴이다. 정확이 이 패턴은 아니지만 아이디어는 똑같다.

 

예를 들어, 영어책은 대부분 이런식이다. 지난회 다뤘던 통합자막을 가지고 짱구굴려보자.

 

Are you Trinity?
니가 튜니티냐?
Who's asking?
넌 누군데?
Just answer my question, shithead!
묻는 말에 대답이나해 짜샤!
Trinity is my name, okay.
Trinity가 내 이름이긴 한데...

 

영어 나오고 우리말 해석 나오거나, 우리말 나오고 영어 작문 나온다.

 

뭔가 삘이 오시는가?

 

글타.

 

영어 나오고 우리말 해석 나오는 걸 뒤집으면 그게 작문이 된다. 우리말 해석 보고 영어로 해보는 연습장이 된다는 말이다.

 

영어 책 다루다보면 이런 짓 많이 한다.

 

아예 한글 해석을 몽땅 날려버리고 영어만 남겨야 한다거나, 이금 얘기한 것처럼 영어와 한글 순서를 바꿔야 한다거나...

 

한글이 포함된 줄 날리는 얘기는 했으니 순서 바꾸는 걸 짱구굴려보자.

 

영어 공부하는 사람이면 이거 응용 잘하면 일반적인 영어책을 작문책으로 바꿔버릴 수도 있다는 말이다.

 

Are you Trinity?

니가 튜니티냐?
Who's asking?
넌 누군데?

 

요렇게 돼 있는 걸...

 

니가 튜니티냐?
Are you Trinity?
넌 누군데?
Who's asking?


 

요렇게 바꿀 수 있다는 말이다. 이거 일일이 손으로 바꾸려면... 더 이상 말안하겠다ㅡ.ㅡ

 

일단 패턴인식해보자. 무슨 짓을 하든 가장 먼저 할일은 '패턴 인식'이다.

 

패턴 인식: 영어만 있는 줄[줄바꿈]한글이 포함된 줄

 

패턴 아주 쉽게 인식된다. 영어줄[줄바꿈]한글줄[줄바꿈]영어줄[줄바꿈]한글줄... 이거 계속 반복된다는 말이다.

 

그럼 저 순서를 뒤집으려면?

 

영어만 있는 줄과 한글이 포함된 줄을 찾아서 아래위를 바꿔주면 그만이다.

 

그럼 한글이 포함된 줄과 영어가 포함된 줄을 찾는 찾기 패턴이 필요하겠지?

 

한글 줄 찾기 패턴은 지난회에 배웠다.

 

한글 줄 찾기 패턴: ^[^a-zA-Z0-9]+$|^[a-zA-Z0-9]+[^a-zA-Z0-9]+$

 

헷갈리면 지난회 다시 읽어보시라.

 

영어만 있는 줄 찾기 패턴은 이렇다.

 

영어 줄 찾기 패턴: ^[ a-zA-Z0-9,.!?']+$

 

일단 한글 줄 찾기 패턴과 달리 공백이 문자 집합에 들어가 있고, 구둣점이나 기호 등 영어줄에 포함될만한 다른 기호들 역시 써줘야 한다. 예를 들어, 문장부호나나 어퍼스트로피 말고도 인용부호나 괄호가 사용된다면 "( ) 도 써줘야 한다는 거다. 영어줄에 포함될 문자는 모두 입력한다. 위의 예에서는 문장부호와 어퍼스트로피만 나와서 간단하게 썼다.

 

한글 줄과 영어 줄을 함께 찾아야 하니까 저 패턴을 조합한다.

 

영어줄/한글줄 찾기 패턴: (^[ a-zA-Z0-9,.!?']+$)\n(^[^a-zA-Z0-9]+$|^[a-zA-Z0-9]+[^a-zA-Z0-9]+$)

 

패턴을 조합하면서 두가지 변화가 생겼다.

 

하나는, 괄호로 영어줄 패턴 부분과 한글줄 패턴 부분을 감싸준 거다. 다시말해, 바꾸기에 활용할 수 있도록 영어줄과 한글줄을 기억하라는 말이다. 바꾸기에서 \1 라고 하면 영어줄을, \2 라면 한글줄을 참조하게 되지 않겠는가?

 

두번째 변화는 \n 가 영어줄 패턴과 한글줄 패턴에 끼어든거다. 뭐, 어렵지 않게 이해갈거다. 영어줄과 한글줄은 줄바꿈 문자로 나눠져 있으니까 당근 줄바꿈 문자에 해당하는 \n 가 필요하다.

 

자, 그럼 바꾸기 패턴은 어떻게 하면 될까? (이미 답 다 말해줬다.)

 

바꾸기 패턴: \2\n\1

 

이게 다다. 영어줄[줄바꿈]한글줄한글줄[줄바꿈]영어줄 로 순서만 바꾸라는 거다. \2 는 영어줄 이고 \1 는 한글줄을 기억하고 있지 않은가. 그러니까 이걸 뒤집으면 순서가 바뀐다.

 

 

 

영어, 한글, 영어, 한글 순으로 돼 있는 문서다.

 

찾기를 하면 몽땅 찾는다. 당연하다. 영어줄 한글줄 연속돼 있는 걸 다 찾으니까...

 

그리고 바꾸기를 누르면...

 

 

한글, 영어, 한글, 영어... 요렇게 바뀐다.

 

정규식... 무서운 놈이다^^

 

패턴이 수천번 반복돼도 버튼 한방에 바꿔준다.

 

상상력만 따라준다면 정규식으로 할 일 많다.

 

오늘은 연습문제 한방으로 끝내련다.

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,