2011-01-28 6 views
1

ユーザーがテキストで指定したURLを取得したいと思います(URLはhttp://で開始する必要があると仮定します)。これは最初の試みである:テキストでユーザーが指定したURLを取得する方法

Pattern pattern = Pattern.compile("http://[^ ]+"); 

が、ユーザーの種類ならば、このような何か:(?)

"look at somepage (http://somepage.net)" 
"look at http://somepage1.net, http://somepage2.net and sth else" 
"Please visit our page http://somepage.net." 

URLは、末尾に間違った文字とありました。これを避ける方法は?

+1

[Javaの+正規表現を使用して、テキスト文書からURLを抽出]の可能な重複(http://stackoverflow.com/questions/1806017/extracting-urls-from-a-text-document-using-java -regular-expressions) – Joel

+0

[Java-stringのURLの存在を検出する方法]の重複が可能です。(http://stackoverflow.com/questions/285619/java-how-to-detect-the-presence-of -url-in-a-string) – dogbane

+0

@Joel ok thatsはうまくいくようです。http://stackoverflow.com/questions/1806017/extracting-urls-from-a-text-document-using-java-regular-expressions/1806161 #1806161しかし、私はこのパターンを理解していないし、それが速いことを願っています。 – bltc

答えて

0

数学、どのようなURL [、。)]など、エンドのみ[A-ZA-Z]または/が、これはhttp://site.com/read.php?key=F# $のようなURLのwhith特定の終わりを壊した。)

+0

正確にここに問題があります。 – bltc

+0

それを軽蔑することができます、と思います。 "http:// [^] +(?<= [A-Za-z0-9#])"これについては、すでに多くの正規表現が書かれています。ちょうどそれgoogleの – kolko

+0

stackoverflowのイデアは、正確には何かをGoogleに人々を送信するの反対です – Prix

0

で終了することはできません答えは100%の精度でこれを行うことができないということです。

"http://somepage1.net,"のようなURLは技術的に合法であり、","がURLの一部であるか句読点であるかを確かめる方法がありません。

URLは"http://somepage1.net or something"のように技術的に違法ですが、一般的なエンドユーザーはこのことを知らないためです。 (彼らはあなたのブラウザーであらゆる種類のファンキーなことを行うブラウザーに慣れています)

正規表現を使って正規のURLを抽出し、右からテキストの句読点を取り除くのが最もよいでしょうURLの末尾... の仮定は、URLの一部ではないことを意図しています。

また、一致する引用符または左かっこをURL境界として扱うこともできます。例えば

The secret URL is "http://example.com/?" ... don't leave off the "?" 
関連する問題