開始行: *キーワード [#oa421920] -Java -正規表現 *関連 [#r8d20b73] -[[Java/正規表現で特定箇所をいくつか抜き出す]] *概要 [#yc8b9d4f] 「テキスト中のリンクのうち、外部サイトを参照するものを別... 参照URLがある条件を満たす場合のみ target="_blank" を挿入... 要件を抜き出すと、 -テキスト中からアンカタグを抜き出す -抜き出した文字列のうち参照URL部分について条件を当てる -条件を満たした場合抜き出したアンカタグに target="\blank"... となる。 *方法 [#we3b012e] String regex = "(<a .*?href=[\"'])(.*?)([\"'])(.*?>)"; /... StringBuffer tunedText = new StringBuffer(); // 置き換え... Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); // textは置き換... while (matcher.find()) { if (! matcher.group(2).matches("^(http|https|ftp)://([... matcher.appendReplacement(tunedText, matcher.group(1) // ... + matcher.group(2) // ... + matcher.group(3) // ... + " target=\"_blank\" " // ... + matcher.group(4)); // ... } } matcher.appendTail(tunedText); *解説 [#n954455c] **テキスト中からアンカタグを抜き出す [#r847afc6] アンカタグを抜き出す正規表現を (<a .*?href=[\"'])(.*?)([\"'])(.*?>) としている。 ここでは抜き出すアンカタグを次の要素に分割している。 -「<a href="(アンカタグの先頭)」 -「(URL)」 -「"(hrefの閉じ)」 -「>(アンカタグの末尾)」 **抜き出した文字列のうち参照URL部分について条件を当てる [... 分割した要素「(URL)」について条件を当てる。ここでは、 if (! matcher.group(2).matches("^(http|https|ftp)://([^\... としている(条件は「foo.bar」をドメイン名とするURL以外の... **条件を満たした場合抜き出したアンカタグに target="_blank... 分割した要素「"(hrefの閉じ)」と「>(アンカタグの末尾)... matcher.appendReplacement() している。 ここで appendReplacement() は''カーソルの先頭からマッチし... *参考 [#k4fb1bc0] -http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/... 終了行: *キーワード [#oa421920] -Java -正規表現 *関連 [#r8d20b73] -[[Java/正規表現で特定箇所をいくつか抜き出す]] *概要 [#yc8b9d4f] 「テキスト中のリンクのうち、外部サイトを参照するものを別... 参照URLがある条件を満たす場合のみ target="_blank" を挿入... 要件を抜き出すと、 -テキスト中からアンカタグを抜き出す -抜き出した文字列のうち参照URL部分について条件を当てる -条件を満たした場合抜き出したアンカタグに target="\blank"... となる。 *方法 [#we3b012e] String regex = "(<a .*?href=[\"'])(.*?)([\"'])(.*?>)"; /... StringBuffer tunedText = new StringBuffer(); // 置き換え... Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); // textは置き換... while (matcher.find()) { if (! matcher.group(2).matches("^(http|https|ftp)://([... matcher.appendReplacement(tunedText, matcher.group(1) // ... + matcher.group(2) // ... + matcher.group(3) // ... + " target=\"_blank\" " // ... + matcher.group(4)); // ... } } matcher.appendTail(tunedText); *解説 [#n954455c] **テキスト中からアンカタグを抜き出す [#r847afc6] アンカタグを抜き出す正規表現を (<a .*?href=[\"'])(.*?)([\"'])(.*?>) としている。 ここでは抜き出すアンカタグを次の要素に分割している。 -「<a href="(アンカタグの先頭)」 -「(URL)」 -「"(hrefの閉じ)」 -「>(アンカタグの末尾)」 **抜き出した文字列のうち参照URL部分について条件を当てる [... 分割した要素「(URL)」について条件を当てる。ここでは、 if (! matcher.group(2).matches("^(http|https|ftp)://([^\... としている(条件は「foo.bar」をドメイン名とするURL以外の... **条件を満たした場合抜き出したアンカタグに target="_blank... 分割した要素「"(hrefの閉じ)」と「>(アンカタグの末尾)... matcher.appendReplacement() している。 ここで appendReplacement() は''カーソルの先頭からマッチし... *参考 [#k4fb1bc0] -http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/... ページ名: