つ以上の非ハイフン、負の先読みのための
^[^-]+\.(?:jpg|png)$
必要はありません。 (既存の正規表現が実際にちょうど(\.(jpg|png))
と同等であることに注意してください:何の文字列がプレフィックスとしてとして(\.(jpg|png))
と(-(100x100|350x350))
を持っていない可能性があるので、先読みは、本当の効果がありません)
追加する編集:あなたの質問は、最初は「サムネイルがまだ作成されていないファイルと一致させたい」と言っていますが、あなたの例では、と一致させたいと言うと、に2つのサムネイルが作成されました。
私の意見では、イメージがサムネイルであるかどうかを判断する方法についての明確なルールは与えないでください。上では、サムネイルのファイル名にハイフンが含まれていて、他の画像のファイル名には含まれていないと仮定するのが最も簡単な方法でした。あるいは、ファイル名が.jpg
または.png
で、末尾に「-100x100
」または「-350x350
」がない場合、ファイルはサムネイル画像の最も狭い定義を取り、「非サムネイル画像です。その場合、次のように書くことができます:
^.*(?<!-100x100)(?<!-350x350)\.(?:jpg|png)\z
負のlookbehindを使用します。 。 。負のlookbehindをサポートする正規表現エンジンを前提としています。
^(?:[^-]|-(?!(?:100x100|350x350)\.(?:jpg|png)\z))*\.(?:jpg|png)\z
しかし、それはちょうど2つの正規表現を使用することがはるかに簡単です::負の後読みがなければ、私たちが代わりに書くことができる(?あなたが使用しているどのような言語は言及していない)
\.(?:jpg|png)\z
-(?:100x100|350x350)\.(?:jpg|png)\z
および必要に文字列ではなく、が2番目の文字列と一致します。あなたの質問は、単一の肯定的な正規表現としてこれをやりたがっていることを意味しますが、あなたはなぜ言及していませんか?
ファイル名が 'image1-200x200.png'の場合はどうなりますか? – anubhava
あなたは賢いです。さて、通常、サムネイルのサイズはファイル名よりも標準化されていますが、変数が可変であればそれを考慮する必要があります。ルールは、推測以上のことを行うには十分明確に定義されていません。 –
合意されていれば、不完全で不明確な要求事項の1つです。 – anubhava