2

次のようなURLがあります...

/images/home/img/digits.png

URLから「数字」を取得するには、正規表現または同等のものを使用する必要があります。同じコードが複製され、ファイル名が常に異なる長さになるため、正規表現を使用しています。

私は正規表現を使用してみましたが、最初の/の後と.pngの前にすべてを取得しましたが、最後の/の後と.pngの前にすべてが必要です。

これが私が試してきたことです:

(?<=/)(.*)(?=.png)
4

2 に答える 2

6
"/images/home/img/digits.png".match(/\/([^\/]*)\.png/i)

戻り値

["/digits.png", "digits"]
于 2012-09-11T11:23:38.957 に答える
4

あなたは本当に近くにいます。(?<=/)([^/]*)(?=\.png$)動作するはずです。

私が追加した3つのことは、次のことを行います。

  1. [^/]*を含まない任意の文字に一致'/'するため、一致にスラッシュを含めることはできません。
  2. \前は、.png.どの文字とも一致しないようにします。
  3. は文字列の$末尾に固定します。

また、数字の部分だけを一致させたいだけで、残りは気にしない場合は、[^/]*使用している先読み量指定子と後読み量指定子が一致に含まれないため、角かっこは必要ありません。したがって、上記のパターンでは、返されるのは によって一致したものだけです[^/]*。これは、暗黙的なグループ 0、またはMatch.Value.NET を使用している場合は にあります。

そのすべてを要約すると、私が使用するのは(?<=/)[^/]*(?=\.png$)です。も一致させたい場合は、大文字と小文字を区別しないフラグを追加することも必要です"/images/home/img/digits.PNG"

于 2012-09-11T11:22:05.510 に答える