Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 정규식으로 HTML 굵은 텍스트(b 태그) 내용 매칭하는 방법

정규식에서 \S는 공백이 아닌 문자(non-whitespace character) 하나를 의미하며, (\S+)는 공백이 아닌 문자가 하나 이상 연속으로 나타나는 패턴을 뜻합니다.

따라서 HTML 문서에서 굵은 글씨(<b> 태그)로 감싸진 내용을 추출하려면 아래 단계를 따르면 됩니다.

  • compile() 메서드를 사용해 정규식을 컴파일하여 Pattern 객체를 생성합니다.

  • matcher() 메서드를 사용해 대상 문자열에 대한 Matcher 객체를 얻습니다.

  • group() 메서드를 사용해 입력 문자열에서 매칭된 부분을 출력합니다.

예제 코드

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String[] args) {
        String str = "<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>";

        // 굵은 글씨(b 태그) 내용을 매칭하는 정규식
        String regex = "<b>(\\S+)</b>";

        // Pattern 객체 생성
        Pattern pattern = Pattern.compile(regex);

        // 문자열에서 컴파일된 패턴과 일치하는 부분 찾기
        Matcher matcher = pattern.matcher(str);

        // 매칭된 결과 출력
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

실행 결과

<b>is</b>
<b>example</b>
<b>script</b>

참고 사항

\S+는 공백을 포함하지 않는 연속된 문자만 매칭하기 때문에, <b>Hello World</b>처럼 태그 안에 공백이 포함된 경우 전체 내용을 가져오지 못합니다. 이런 경우에는 <b>(.+?)</b>처럼 임의의 문자를 비탐욕적(lazy) 방식으로 매칭하는 정규식을 사용하는 것이 좋습니다. 또한 실무에서는 정규식보다 Jsoup 같은 HTML 파서 라이브러리를 사용하는 것이 더 안정적이라는 점도 기억해 두세요.