Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの正規表現を使ってHTMLの太字タグ()の中身を抽出・照合する方法


正規表現「\S」は、空白以外の1文字にマッチします。さらに、次のように「+」を組み合わせた正規表現を使うと、太字タグの間にある1文字以上の空白以外の文字列にマッチさせることができます。

"(\S+)"

したがって、HTMLスクリプト内の太字フィールドを照合するには、以下の手順を実行します。

  • compile()メソッドを使って、上記の正規表現をコンパイルし、Patternオブジェクトを作成します。

  • 作成したPatternオブジェクトに対してmatcher()メソッドを呼び出し、対象の文字列を検索するMatcherオブジェクトを取得します。

  • find()メソッドでマッチ箇所を順番に探しながら、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>";

        // 太字タグの内容にマッチさせる正規表現
        String regex = "<b>(\\S+)</b>";

        // 正規表現をコンパイルしてPatternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);

        // 対象の文字列に対してMatcherを取得
        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> のように太字の中にスペースが含まれる場合はマッチできません。そのようなケースでは、貪欲マッチを避けるために以下のような正規表現を使用します。

String regex = "<b>(.+?)</b>";

「.+?」とすることで、終了タグ「</b>」の手前までの最小限の文字列をキャプチャできるため、空白を含むテキストでも正しく抽出できます。また、より堅牢なHTML解析が必要な場合は、JsoupなどのHTMLパーサーライブラリの利用も検討するとよいでしょう。

  1. Java正規表現で文字の範囲をマッチさせる方法【文字クラスの使い方を解説】

    文字クラスで文字の範囲をマッチさせる基本正規表現において、ある文字から別の文字までの範囲に含まれるすべての文字(文字の範囲)をマッチさせたい場合は、文字クラスを使用します。文字クラスは、角括弧 [] の中にハイフン - で始点と終点をつなげて記述します。[a-z]「[a-zA-Z]」…… すべての英字(大文字・小文字のアルファベット)1文字にマッチします。「[0-9&&[^35]]」…… 3と5を除くすべての数字にマッチします。&& は文字クラス同士の共通部分(積集合)を表すJava独自の記法です。なお、&& を使った文字クラスの共通部分演算はJ

  2. Javaの正規表現を使って文字列からHTMLタグを抽出する方法

    Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージのPatternクラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行うために、次の2つのメソッドが提供されています。 compile() − 正規表現を表す文字列を引数として受け取り、Patternクラスのオブジェクトを返します。 matcher() − 対象となる文字列を受け取り、その文字列を現在のPatternオブジェクトが表すパターンと照合するためのMatcherオブジェクトを生成します。