인프런 커뮤니티 질문&답변

슈비님의 프로필 이미지
슈비

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

각 글의 디테일한 정보를 크롤링하여 엑셀에 담기

질문문

해결된 질문

작성

·

121

1

안녕하세요

정규식을 이용하여

\text { 내용 } 에서 내용 부분으로 찾아바꾸기 기능을 구현하려면 어떻게 해야하나요?

답변 2

1

일코님의 프로필 이미지
일코
지식공유자

슈비님 안녕하세요?

답변이 늦었습니다, 죄송합니다ㅜㅜㅜ

아래아한글 기본기능에는 정규식 찾기만 제공되고,

찾아바꾸기는 제공되지 않습니다.

 

그런 이유로
정규식 찾아바꾸기를 쓰시려면

선택된 문자열을 파이썬으로 가져와서

re 모듈로 정규식 바꾸기를 수행한 후에

붙여넣기를 하는, 일종의 함수를 만드셔야 합니다.

 

몇 년 전에 한/글에서 정규식 찾아바꾸기 함수를 만들어 블로그에 공유했는데,
참고해 주시기 바랍니다.

[파이썬-한/글 자동화] 한/글파일로 정규식 찾아바꾸기(re) (tistory.com)

 

굳이 방법을 나누면 크게 두 가지로 나뉠텐데,
1. 한/글의 정규식 찾기를 이용한 후, 파이썬으로 해당 문자열을 가져와 정규식 바꾸기를 하고 텍스트 삽입

  1. 한/글의 GetText나 GetTextFile 등의 소스에서 텍스트를 가져온 후 정규식 찾아바꾸기를 하고, 바뀐 부분만 한/글에 삽입.

 

정규식의 고급 문법(그룹 및 재참조 등)을 사용하시려면 두 번째 방법을,
간단한 패턴 찾아바꾸기라면 첫 번째 방법을 사용하시면 됩니다.

 

해보시고 막히는 부분 생기면 다시 질문 남겨주세요.

같이 고민해보시죠^^

 

0

안녕하세요, 인프런 AI 인턴입니다.
슈비님, 정규식을 사용하여 특정 패턴의 문자열을 찾아 수정하려면 Python의 re 모듈을 사용하시면 됩니다. \text { 내용 } 에서 내용 부분을 찾으려면 다음과 같은 과정을 거치게 됩니다.

  1. re 모듈을 임포트합니다.
import re
  1. 찾고자 하는 패턴을 정규식으로 작성합니다.
pattern = r"\\text\s\{(.*?)\}"

여기서 \s는 공백을 의미하고, {} 괄호 안의 .*?는 괄호 안의 임의의 문자가 최소한으로 반복되는 부분을 찾습니다. (?는 non-greedy로 최소 매칭을 의미합니다.)

  1. 찾고자 하는 문자열이 있는 텍스트 내에서 해당 패턴을 찾아내어 변경합니다.
text = "여기에 검색할 전체 텍스트가 들어갑니다. 예를 들면, \text { 찾고자하는내용 } 입니다."
new_text = re.sub(pattern, "새로운내용", text)
  1. re. sub() 함수를 사용하여 원하는 부분을 ‘새로운내용’으로 대체할 수 있습니다.

이렇게 하면 new_text 변수에 저장된 문자열에서 원하는 부분이 ‘새로운내용’으로 대체된 결과를 얻을 수 있습니다.

도움이 되었기를 바랍니다. 프로그래밍에 관련된 추가 질문이 있으시면 언제든 문의해주세요!

슈비님의 프로필 이미지
슈비

작성한 질문수

질문하기