例えばスクレイピングをするときで、あるワードが含まれる要素をタグ文字ごと取得したい場合のメモです。
KugiriUtil.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
*対象のワードが含まれた、区切り文字で囲まれた文字列を取得するメソッド
* @param target 全ての文字が含まれる文字列。
* @param searchKeyWord 検索対象の文字。
* @param kugiriStartWord 区切りの始まりを示す文字。
* @param kugiriEndWord 区切りの終わりを示す文字。
*/
public static String getKugiriBlock (String target , String searchKeyWord , String kugiriStartWord, String kugiriEndWord) {
// 正規表現の設定
String regex = kugiriStartWord + ".*?" + searchKeyWord + ".*?" + kugiriEndWord;
Pattern ptrn = Pattern.compile(regex);
Matcher matcher = ptrn.matcher(target);
// 正規表現の検索
matcher.find();
// 対象の文字列を含む区切りを返す
return target.substring(matcher.start() ,matcher.end());
}
特記事項
・複数のブロックを取得したい場合は、matcher.find()をwhile文で繰り返す。
・最短一致とする為、正規表現に「?」を追加する。