• ベストアンサー

Javaの正規表現を使った画像URLの自動リンクができません

arakororinの回答

回答No.1

まずソースを貼ってください。 そうでなければ的確なアドバイスは難しいです。 Pattern patternB = Pattern .compile( "^http(s?)://[\\w\\.\\-/:&?,=#]+.((jpg)|(jpeg)|(gif)|(png)|(bmp))$", Pattern.CASE_INSENSITIVE); とりあえずこんなんでどうでしょう?

yachoi
質問者

補足

ソースは、 //自動リンク public static String AutoLink(String s){ //正規表現用変数 Pattern pattern; Matcher matcher; pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:&?,=#]+(jpg|jpeg|gif|png|bmp)",Pattern.CASE_INSENSITIVE); matcher = pattern.matcher(s); //優先順位に注意 if(matcher.matches()){//画像なのでイメタグを利用する s = matcher.replaceAll("<IMG SRC=\"$0\">"); }else{//画像でないのでAタグを利用する pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:&?,=#]+",Pattern.CASE_INSENSITIVE); matcher = pattern.matcher(s); s = matcher.replaceAll("<A HREF=\"$0\" target=_blank>$0</A>"); } return s; } になります。 よろしくお願いいたします。

関連するQ&A

  • 正規表現

    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 が帰らないようにする正規表現を教えてください。お願いします。

    • ベストアンサー
    • Java
  • URL\正規表現@java

    perlメモさん?にPerlでのURLの正規表現はあるのですが Javaで使いたいと思います。 Pattern pattern = Pattern.compile("正規表現"); Matcher matcher = pattern.matcher(String); のステートメントを使う方法をご存知な方おられませんか? Perlメモさん?の正規表現をエディタにコピペしても 不正なエスケープエラー?がでてだめでした。 (http Urlのごちゃごちゃした奴の下から二番目) (「\b(?:」で始まる奴です) なのでエディタに貼り付けて\を\\に置き換えたものを 正規表現の部分にしたところコンパイルはとおりましたが、 正確にマッチしてくれませんでした。 よろしくお願いします。

    • ベストアンサー
    • Java
  • .htaccessの正規表現

    .htaccessの正規表現で質問があります。 <Files ~ "\.(html|gif|jpeg|png)$"> 例えばこのような場合最後のファイル名が「html」「gif」「jpeg」「png」に適用されますが、~(チルダ)はパターンマッチ、(||)(カッコとパイプライン)はパイプラインで区切ってそのいずれか、$(ドルマーク)は行末のマッチングと分かったのですが、\.(円マークとドット)が分かりません。どういう意味なんでしょうか? 例えば、次のように記述すると間違いなんでしょうか? <Files ~ "(html|gif|jpeg|png)$"> また、 <Files password.html> このような記述が載っていたのですが、ファイル名がこのような場合ダブルクォーテーション(")で囲まなくていいのでしょうか? また、*(アスタリスク)と?(クエスチョンマーク)は必ず1文字以上でなければいけないのでしょうか?0文字ではダメなんでしょうか? 回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • 正規表現が表示されない・・・

    こんにちは。ちょっと質問です。J2SE1.4.0を使用しているのですが、以下のコードで正規表現を表示しようとしているのですが、表示されません。 <%@ page contentType="text/html;charset=Shift_JIS" import="org.apache.oro.text.regex.*" %> <html> <head> <title>正規表現の検索</title> </head> <body> <% String strMsg="メールアドレスは、******@nifty.com です。"; strMsg+="******@mcn.ne.jp もあります。"; Pattern ptn=Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE); Matcher mtch=ptn.matcher(strMsg); while(mtch.find()){ out.println(mtch.group() + "<br />"); } %> </body> </html> コードが違うのかなと思って、他のパソコンでやったのですが、こっちでは正常に動作されました。Jakartaサイトに行って、OROをインストールしたのですが、これでも表示されませんでした。自分なりに手は尽くしたのですが、わかりません。これ以外に他に何か方法はありますでしょうか?

  • 正規表現の空白文字について

    Javaで正規表現を使って文字列のマッチング処理を勉強しています。 パラメータで渡されてきた値に"name="と入っている場合、マッチOKに したいのですが、 "name" と "="の間には、全角、半角スペースが複数混在している可能性があり、 その場合もマッチOKにしたいです。 アドバイスをお願いします。 ・マッチOKにしたい文字列  name=  name =  name =  name  =  name   =  など。 name" と "="の間には、全角、半角スペースが複数存在している可能性あり。 スペースなし(name=)の場合もマッチOKにしたい。 以下のようにすると全角のみ、半角のみのスペースなら1文字以上入っていても マッチOK(スペースなし(name=)の場合もマッチOK)ですが、 全角と半角のスペースが混在してしまうとマッチOKになりません。 String param = "name=mike"; Pattern p = Pattern.compile("name( *?|\\s?)=", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(param);

    • ベストアンサー
    • Java
  • Javaの全角スペースの正規表現

    今、Javaのプログラムをしてるんですが、正規表現で全角スペースをどう表現したらいいのでしょうか? 下記のプログラムを実行して、スペースを埋めて「あいう」と出したいです。 Pattern.compile("正規表現").matcher(" あ い う ").replaceAll(""); 正規表現の\sとか、trim()メソッドを使用するなどだと、半角スペースしか削除することができなかったです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 正規表現に関する質問

    NAMAZUの設定をしていて、設定のサンプルに以下のような正規表現があり分からなかったので質問させて下さい。 ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*" \\となっているところエスケープならが\が一つでいいのでは? と疑問に思いました。自分の間違いと思いますが教えてください。

  • PDFを画像に自動変換したい

    30ページの PDF ファイルを30枚の画像に変換するにはどうすればいいでしょうか。 できるだけ高画質(のBMP、PNG、Gif)で、効率的に変換できるソフトはないでしょうか。 一枚ずつ画像に変換がめんどくさくて困っています。

  • 正規表現 .+? について

    正規表現(egrepコマンド)の .+? とはどのようなパターンを意味するのでしょうか。 例1のケース(.+? の部分)が何故マッチするのかがわかりません。 また、例1, 2のケースは共にマッチしますが、 .+? と .*? の違いは何になるのでしょうか。 例1. echo "tmp/foo.txt" | egrep "tmp.+?/.+?foo[^/]*$" 例2. echo "tmp/foo.txt" | egrep "tmp.*?/.*?foo[^/]*$"

  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。