Pythonの正規表現を使用して、テキストからURLの一部を抽出しています。私が探しているURLは限られたパターンのセットからのものであるため、正規表現でそれらを処理できるはずだと感じています。私が抽出しようとしているのは、ファイル名の最初の部分(以下のすべての例では「some.file.name」)であり、ドット、文字、数字を含めることができます。
URLが取ることができる形式の種類は次のとおりです。
http://www.example.com/some.file.name.html
http://www.example.com/some.file.name_foo.html
http://www.example.com/some.file.name(123).html
http://www.example.com/some.file.name_foo(123).html
http://www.example.com/some.file.name
http://www.example.com/some.file.name_foo
http://www.example.com/some.file.name(123)
http://www.example.com/some.file.name_foo(123)
私はこの正規表現でほとんどそこにいると思います:
http://www\.example\.com/([a-zA-Z0-9\.]+)(_[a-z]+)?(\(\d+\))?(\.html)?
ただし、URLがリストの最初のURLのようである場合は、一致に「.html」が含まれます。これを止める方法はありますか、それとも正規表現の根本的な制限ですか?
コード内の拡張子は常に同じであり、ファイル名の一部として有効になることはないため、コードから削除することは非常に喜ばしいことですが、正規表現の一致の一部として削除する方がクリーンです。
編集:
これらのURLは本文に含まれていることを強調しておく必要があります。前後に文字があるかどうか、またはそれらの文字が何であるかについては保証できません。数字、文字、アンダースコア、ドットではないと考えるのが安全だと思います。