검색·치환·미리보기
"""Read-only preview, literal replacement, and regex replacement."""
from pathlib import Path
from pywpdoc import Document
def run(fmt: str, out_dir: Path) -> Path:
out_dir.mkdir(parents=True, exist_ok=True)
doc = Document.new(fmt)
doc.add_paragraph("Customer: Alice; Amount: 123")
preview = doc.preview_replace("Alice", "Bob")
assert preview.count == 1
assert "Alice" in doc.paragraphs[-1].text # preview never edits
assert doc.replace_text("Alice", "Bob") == 1
assert doc.replace_regex(r"\b123\b", "456") == 1
path = out_dir / f"search-replace.{fmt}"
doc.save(path)
assert "Bob" in Document.open(path).paragraphs[-1].text
return path
if __name__ == "__main__":
import sys
print(run(sys.argv[1], Path(sys.argv[2])))
doc.find(query)는 텍스트 위치 정보 목록을 반환합니다.doc.preview_replace(search, replacement)는 수정 없이 후보를 확인하고count,matches,to_dict()를 제공합니다.doc.replace_text(search, replacement)는 문서를 실제로 수정하며 치환 개수(int)를 반환합니다.doc.find_regex(pattern),doc.replace_regex(pattern, replacement)는 정규식을 처리하지만 텍스트 필드·변경 추적 경계 등 안전하지 않은 구간은 제한합니다.
everywhere, case_sensitive, count는 메서드별 시그니처를 확인하세요. 미리보기의 오프셋은 화면의 좌표가 아니라 문단 논리 텍스트 기준입니다.