2017-08-03 7 views
1

URI.extractを使用してテキスト内のURL(この例では電子メール)を識別して処理します。末尾の角カッコを含むURI抽出]

A少し迷惑な機能は、スキーム

urls = URI.extract(text, ['http', 'https', 'cid','mailto']) 

を経由して抽出するとき、彼らは彼らの周りに括弧付きのテキストに含まれている場合は、それらのいくつかは、末尾の角括弧で戻ってくるということです。

私が使用しているすべてのURLパーサを壊す末尾の閉じ括弧に注目してください。

これを停止するには賢明な方法がありますか?

URI.extractのドキュメントは非常に短いです。

+2

ありますか?私はかなりURLの中にすべきではないと確信していますが、常にあなたのお尻にあなたを刺させるいくつかの端の場合があります – Carpela

+0

技術的な角括弧はURIで許されているので、 'extract'は誤動作していません。 (実際には、Railsは 'var [] ='のようなものをたくさん使います)。しかし、 'mailto:'スキームは別のRFCで定義されており、おそらくそこでは許可されません。 'URI'は洗練されていないかもしれません。 –

+0

興味深いことに、私はmailto:とcid:typeのリンクの周りにエラーが出る傾向があります。おそらくそれはそれを説明するかもしれない。 – Carpela

答えて

1

多分私は何かを見逃していたかもしれませんが、非常に簡単なテキストの置換は助けになるでしょうか?あなたはtr UNIXツールに精通している場合は、RubyのためにもString#trあります:( "]")url.chompを使用して任意の危険性は

urls.map { |s| s.tr('[]', '') } 
=> ["mailto:[email protected]"] 
+0

私はこのためにchompを使うことを考えました。 私の懸念は、おそらく、匹敵しない角括弧を削除したいだけだと思います。 – Carpela

+0

真、その場合は 'urls.map {| s | s.chomp( ')')} 'で十分です。 – EdvardM

+1

括弧が一致していれば、それでも終了括弧は削除されますが。並べ替えの不安。.... http://somesite.com/file[1] – Carpela

関連する問題