1

トップ レベル ドメインとそれに続く 5 桁で一致するルールを作成しようとしています。私の問題は、既存のpcreが私が説明したものと一致しているが、必要なときにURLのはるかに後で一致するために発生します。他の場所ではなく、TLD の最初の出現時に一致するようにします。これを確認する簡単な方法は、「/」文字が先行していない時点で TLD を照合することです。私は否定的な後読みを使用しようとしましたが、それは1文字しか見返さないため、うまくいきません。

例: 現在の動作状況

domain.net/stuff/stuff=www.google.com/12345

.com/12345 と一致しますが、URL の最初の TLD ではないため、この一致は望ましくありません

例: どのように機能させたいか

domain.net/12345/stuff=www.google.com/12345

.net/12345 で一致し、.com/12345 での後の一致を無視します

私の今の表情

(\.[a-z]{2,4})/\d{5}

編集:将来誰かがこの同じ問題を抱えた場合に備えて、おそらく問題がより明確になるように書き直しました。

4

2 に答える 2

1

あなたはかなり近いです:)

探しているもの (つまり: (\.[a-z]{2,4})/\d{5})に一致する前/に、行の先頭から一致していないことを確認する必要があります。

^[^\/]*\.現在の正規表現の前に単純に追加することをお勧めします。したがって、結果の正規表現は次のようになります。

^[^\/]*\.([a-z]{2,4})/\d{5}

それはどのように機能しますか?

  • ^これがテストされた文字列の始まりであることをアサートします
  • [^\/]*を含まない任意の文字列を受け入れます/
  • \.([a-z]{2,4})/\d{5}一致させたいパターンです (a の.後に 2 ~ 4 個の小文字が続き、次に a/と少なくとも 5 つの数字が続きます)。

これはregex101 の実例へのパーマリンクです。
乾杯!

于 2014-03-01T00:02:39.777 に答える
0

次の正規表現を使用できます。

'|^(\w+://)?([\w-]+\.)+\w+/\d{5}|'

オンラインデモ: http://regex101.com/

于 2014-03-01T00:16:39.153 に答える