Javaの正規表現を使って文字列からHTMLタグを抽出する方法
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。
このパッケージのPatternクラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行うために、次の2つのメソッドが提供されています。
compile() − 正規表現を表す文字列を引数として受け取り、Patternクラスのオブジェクトを返します。
matcher() − 対象となる文字列を受け取り、その文字列を現在のPatternオブジェクトが表すパターンと照合するためのMatcherオブジェクトを生成します。
Matcherクラスは、実際にマッチ操作を実行するエンジンの役割を担います。マッチした値を取得するには、このクラスの次の2つのメソッドを使用します。
find() − 現在のオブジェクトが表すマッチ操作が成功すればtrue、失敗すればfalseを返します。
group() − グループ番号を表す整数値を引数として受け取り、マッチ操作時にそのグループがキャプチャした文字シーケンスを返します。
文字列からHTMLタグを抽出する手順
以上を踏まえると、文字列からHTMLタグを抽出する流れは以下のようになります。
- Patternクラスのcompile()メソッドに、抽出したいHTMLタグを表す正規表現を渡して、Patternオブジェクトを作成します。
- Patternクラスのmatcher()メソッドを使って、対象の文字列とのマッチャーを生成します。
- Matcherクラスのfind()メソッドで、マッチが存在するかどうかを判定します。
- マッチした場合は、group()メソッドでマッチした文字列を取得します。
サンプルコード
次の例では、文字列内の<b>タグで囲まれた部分を正規表現で抽出しています。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractHtmlTag {
public static void main(String[] args) {
String str = "Welcome to <b>Tutorialspoint</b>";
// パターンオブジェクトの作成
Pattern pattern = Pattern.compile("<b>(\\S+)</b>");
// コンパイル済みパターンを文字列に適用
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println(result);
}
}
}
実行結果
Tutorialspoint
正規表現「<b>(\S+)</b>」は、<b>タグと</b>タグに囲まれた空白以外の文字列(\S+)をキャプチャグループとして捉えます。group(1)を呼び出すことで、タグ自体ではなく中身のテキストだけを取り出せる点がポイントです。
補足:実務ではHTMLパーサーの利用も検討しましょう
正規表現による抽出は、単純なパターンのマッチングには有効です。しかし、ネストしたタグや多数の属性を含む複雑なHTMLを扱う場合、正規表現だけでの解析には限界があります。実務でHTMLを本格的に処理する際は、Jsoupなどの専用のHTMLパーサーライブラリを併用することをおすすめします。
-
Javaの正規表現でMM/DD/YYYY形式の日付を検証する方法
Java の java.util.regex パッケージには、文字シーケンスの中から特定のパターンを見つけ出すためのさまざまなクラスが用意されています。 このパッケージの中心となる Pattern クラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行う際には、主に次の2つのメソッドを使用します。 compile() — 正規表現を表す文字列を受け取り、コンパイル済みの Pattern オブジェクトを返します。 matcher() — 検証対象の文字列を受け取り、現在の Pattern オブジェクトが表すパターンと照合するための Matcher オブジェクト
-
Javaの正規表現で文字列から数値を抽出する方法
Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp