[java] Apache POI를 이용한 Word 문서 정규식 검색

Apache POI는 Java에서 Microsoft Office 포맷 파일을 조작하는 라이브러리입니다. 이 라이브러리를 사용하면 Java에서 Word, Excel, PowerPoint 등의 문서를 읽고 쓸 수 있습니다.

이번에는 Apache POI를 사용하여 Word 문서에서 정규식을 이용한 검색을 어떻게 할 수 있는지 알아보겠습니다.

1. Apache POI 의존성 추가

먼저, Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.0</version>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다.

implementation 'org.apache.poi:poi:4.1.0'

2. Word 문서 읽기

다음은 Apache POI를 사용하여 Word 문서를 읽는 예제입니다.

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class WordDocumentReader {

    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream = new FileInputStream(new File("example.docx"));
            XWPFDocument document = new XWPFDocument(fileInputStream);

            for (XWPFParagraph paragraph : document.getParagraphs()) {
                for (XWPFRun run : paragraph.getRuns()) {
                    // 정규식 패턴에 매칭되는지 확인
                    if (run.getText(0).matches("your-regex-pattern")) {
                        System.out.println(run.getText(0));
                    }
                }
            }

            document.close();
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제는 “example.docx” 파일을 읽고, 각 문단과 텍스트의 run 객체를 반복하여 getText() 메서드를 사용하여 텍스트 내용을 가져옵니다. 그리고 가져온 텍스트가 주어진 정규식 패턴과 매칭되는지 확인하고 매칭되는 경우에는 출력합니다.

3. Word 문서 쓰기

Apache POI를 사용하여 Word 문서를 생성하고 특정 위치에 텍스트를 쓸 수 있습니다. 아래는 예제입니다.

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordDocumentWriter {

    public static void main(String[] args) {
        try {
            XWPFDocument document = new XWPFDocument();
            FileOutputStream fileOutputStream = new FileOutputStream(new File("output.docx"));

            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("Hello, World!");

            document.write(fileOutputStream);

            document.close();
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제는 새로운 Word 문서를 생성하고, 텍스트를 추가하여 “output.docx” 파일로 저장합니다.

결론

Apache POI를 사용하면 Java에서 Word 문서를 다룰 수 있으며, 정규식을 이용하여 특정 패턴을 검색하거나 텍스트를 쓸 수 있습니다. 이를 통해 자동화된 문서 처리나 특정 내용을 추출하는 등의 작업을 쉽게 처리할 수 있습니다.

더 자세한 내용은 Apache POI 공식 문서를 참조하시기 바랍니다.