正規表現は、任意の文字列パターンを検出するだけのものではありません。例えば、本項の例のように、文字列中からURL文字列を抽出し、リンク文字列に置き換える手法などは、掲示板アプリケーションなどではいわば定石ともいうべきテクニックです。
そのほか、メールアドレスに対しても同様の効果が適用できるでしょうし、また、文字列中からHTMLタグを取り除く場合にも応用可能です。
リスト6 urlLink.jsp |
<%@ page contentType="text/html;charset=Shift_JIS" import= |
Pattern#matcherメソッドを使って正規表現検索を行うまでは、先ほどの例と同様です。しかし、前項ではMatcher#groupメソッドを介してマッチング文字列を抽出したのに対し、今回はreplaceAllメソッドで置き換え処理を行います。
replaceAllメソッドは引数として単純に固定文字列を指定できるだけでなく、$0、$1、・・・のようなマッチングした部分文字列への参照を含むことができるのが特徴です。
$0にはマッチングした文字列全体が、$1、・・・$9には「()」で囲まれたサブマッチング文字列(例えば、ここでは「http://」か「https://」)が順番に格納されます。この$0...$9(マッチング参照)を利用することで、本項の例のようなマッチング文字列を基にした「加工」が容易に可能となるわけです。
例えば、本項の例では「http://www.wings.msn.to/」が正規表現パターンにマッチングしますので、置き換えの結果、以下のような文字列が返されます。
新WINGSサイト <a href='http://www.wings.msn.to/'>http://www.wings.msn.to/</a>
をよろしく! |
なお、今回はマッチングしたすべての文字列を置き換え対象としますので、replaceAllメソッドを使用しましたが、もしもマッチングした最初の1つのみを置き換え対象としたい場合にはreplaceFirstメソッドを使用します。
replaceAll(replaceFirst)メソッドを利用することで、正規表現パターンに合致した文字列を置き換えることができます。例えば、掲示板アプリケーションでHTMLタグを取り除いたり、メールアドレスやURLをタグで置き換える場合などに強力な効果を発揮します。
Copyright © ITmedia, Inc. All Rights Reserved.