정규식에서 \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 파서 라이브러리를 사용하는 것이 더 안정적이라는 점도 기억해 두세요.