文字列がURLエンコーディングされているかの判定
URLの一部(ホスト部)が「URL エンコーディングされているか否かを予め判定したい」という要求が生じたため,下記のように正規表現を用いて判定を行った.ルールは「URLエンコードされた結果は "%xy" が繰り返される.ここで x,y は16進数」とした(ただし,このルールが正しいのか,よく知らない).
プログラム例を以下に示す.
ちなみに変数 str の値は既存の URL からコピペしたものであり,私の趣味でない(^^).
import java.io.*; import java.util.regex.Pattern; import java.util.regex.Matcher; public class tmp2 { public static void main(String[] args){ String str = "%E7%86%9F%E5%A5%B3%E7%94%BB%E5%83%8F%E5%8B%95%E7%94%BB.com"; String regex = "%[0-9A-Z][0-9A-Z]%[0-9A-Z][0-9A-Z]"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); if(m.find()) System.out.println("正規表現とマッチ"); else System.out.println("正規表現とマッチしない"); } }