2013年8月22日木曜日

?でsplit Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ?

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?

"?" (はてな、クエッション)
でsplitをしようとしたら、このようなエラーがでました。

"http://XXXXXX.com/AAAAAAA/CCCCC/?page=2&mode=max&rtn_urk=http://XX&version=1.0"

こんなURLのパラメータだけを取得しようとして、失敗!!

とりあえず、splitから方向転換して、

String sUrl   = "http://XXXXXX.com/AAAAAAA/CCCCC/?page=2&mode=max&rtn_urk=http://XX&version=1.0";
String sParam = sUrl.substring( sUrl.indexOf("?") + 1);
System.out.println("パラメーター:" + sParam);
こんな感じにすると成功!!

出力結果
パラメーター:page=2&mode=max&rtn_urk=http://XX&version=1.0

splitはだめでしたが、indexOfは?を認識したようです。
なぜ??

このままでもいいんですが、何となくsplitできる方法をさがしたところ。。。


String[] sList = sUrl.split("\\?");

このようにエスケープ文字を2つ入れるとOKでした。

?がエスケープ文字とは知らなかったです。。。

0 件のコメント:

コメントを投稿