TwitterからのJSONフィードを見て、正規表現を使用してURLをクリック可能にしようとしています。
問題は、テキストに末尾にコンマが付いたURLが含まれていることです。カンマは合法的にURLの一部にすることができますが、この場合、カンマはユーザーが挿入した句読点にすぎません。
これを回避する方法はありますか?私は何かが足りないのですか?
あなたは何かを逃していません。プレーンテキストとして提供され、プレーンテキストで囲まれている場合、「意図された」URLを確実に判別する方法はありません。あなたの最善の策は、知識に基づいた推測をすることです。
一般的なアプローチは、問題の句読点の後に空白が続くか、文字列のターミネータであるかを確認することです。そうである場合は、URLの一部として解釈しないでください。それ以外の場合は、それを含めます。
この問題は、コンマや1文字に限定されないことに注意してください(省略記号を考慮して...
ください)。
句読点の場合は、最後の文字を無視できます(URLの途中の句読点が影響しないようにするため)。
例えば。正規表現は次のようになります。
`([a-z/A-Z0-9.,]*?)([.,]?)\s`
警告(正規表現の最初の部分にはすべてのURLが含まれているわけではないので、それを修正する必要があります。ただし、基本的に([a-z/A-Z0-9.,]*?)
は、URLの主要部分と一致するものがあります。*
多くの文字を許可しますが、?
そうでないように使用します。貪欲ではありません。
次に([.,]?)
、可能な末尾の句読点\s
を照合し、スペースまたは空白を照合するために使用します。
したがって、最初の部分式はurlであり、リンクに変換できます。
インターネットにアクセスできる場合は、リソースにアクセスして404が返されるかどうかを確認し、末尾の句読点がURLの一部であるか実際の句読点であるかを判断できます。