1

TwitterからのJSONフィードを見て、正規表現を使用してURLをクリック可能にしようとしています。

問題は、テキストに末尾にコンマが付いたURLが含まれていることです。カンマは合法的にURLの一部にすることができますが、この場合、カンマはユーザーが挿入した句読点にすぎません。

これを回避する方法はありますか?私は何かが足りないのですか?

4

2 に答える 2

2

あなたは何かを逃していません。プレーンテキストとして提供され、プレーンテキストで囲まれている場合、「意図された」URLを確実に判別する方法はありません。あなたの最善の策は、知識に基づいた推測をすることです。

一般的なアプローチは、問題の句読点の後に空白が続くか、文字列のターミネータであるかを確認することです。そうである場合は、URLの一部として解釈しないでください。それ以外の場合は、それを含めます。

この問題は、コンマや1文字に限定されないことに注意してください(省略記号を考慮して...ください)。

于 2012-09-01T05:41:45.580 に答える
1

句読点の場合は、最後の文字を無視できます(URLの途中の句読点が影響しないようにするため)。

例えば。正規表現は次のようになります。

`([a-z/A-Z0-9.,]*?)([.,]?)\s`

警告(正規表現の最初の部分にはすべてのURLが含まれているわけではないので、それを修正する必要があります。ただし、基本的に([a-z/A-Z0-9.,]*?)は、URLの主要部分と一致するものがあります。*多くの文字を許可しますが、?そうでないように使用します。貪欲ではありません。

次に([.,]?)、可能な末尾の句読点\sを照合し、スペースまたは空白を照合するために使用します。

したがって、最初の部分式はurlであり、リンクに変換できます。


インターネットにアクセスできる場合は、リソースにアクセスして404が返されるかどうかを確認し、末尾の句読点がURLの一部であるか実際の句読点であるかを判断できます。

于 2012-09-01T05:41:27.270 に答える