0

のようなURLを取りましょう

www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension

「set_of_random_characters_everything_possible.randomextension」をキャプチャしたい場合は[^/\n]+$機能しますか? ( Trying to get the last part of a URL with Regex から取得した解決策)

私の質問は: "\n" の部分はどういう意味ですか (それがなくても機能します)? また、URL に「/」以外の最もカジュアルな文字の組み合わせが含まれている場合、それは安全ですか?

4

2 に答える 2

2

まず、前のwww.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextensionようなスキームのない URL ではないことに注意してください。http://

次に、URL を自分で解析しないでください。どの言語を使用していますか? おそらく、正規表現を使用するのではなく、既に作成、テスト、およびデバッグされた既存のモジュールを使用したいでしょう。

PHPを使用している場合は、parse_url関数が必要です。

Perl を使用している場合は、URIモジュールが必要です。

于 2012-12-27T17:52:40.183 に答える
1

この説明を見てください:http://regex101.com/r/jG2jN7

基本的に、ここで行われているのは、「スラッシュと改行以外の任意の文字を1回まで無限に一致させる」ことです。\r\n一部のプログラムでは、否定された文字クラスは、挿入されたもの以外のものと一致するため、人々は否定されたcharクラスに挿入します。したがって[^/]、その場合は新しい行と一致します。

たとえば、テキストに改行があった場合、改行の後にデータを取得することはできません。

ただし、これはあなたの場合には当てはまりません。この動作にはsフラグを使用する必要があります(PCRE_DOTALL)

TL; DR:そのままにすることも、削除することもできます。問題ありません。

不明な点があるかどうか、または少しずさんな説明をしたかどうかを尋ねてください。

于 2012-12-27T17:26:56.063 に答える