• ベストアンサー

正規表現

String u = "http://~~~~"; Pattern ptn = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+",Pattern.CASE_INSENSITIVE); Matcher objMch = ptn.matcher(u); if (!objMch.matches()) return "error"; とした場合、 普通のURLなら大丈夫ですが、http://......?a=1&... などのようにパラメータが付くと error がかえされます。 ということで、? や & などでパラメータが付いても error が帰らないようにする正規表現を教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

いろいろ考えると [] 内に % や ; も入れてやった方が安全かも>#1. この辺は「どこまで頑張るか」の勝負で, Perl 的には「参考」に挙げたようになります. でも, (http://|​https://)​{1} って変なの. {1} の存在理由が分からん. あと, 「URL」っていうならスキームが ftp だったり coffee だったりするのも面倒を見てあげないといけないような....

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#URI
noname#101202
質問者

お礼

皆さんありがとう。 正直正規表現って超苦手なので、基礎からやり直します。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

課題かしら? この回答からもっとも最短距離で 答えを出すなら []の中に?や&や=を入れるのが 一番早いわね。

すると、全ての回答が全文表示されます。

関連するQ&A