0

これは一般的な正規表現の質問ですが、PHP に適用します。

形式が常にxである-123x456ことを意味する文字列を含まないすべてのファイルを見つけようとしています。(画像の解像度と同様) .-12345x678-INTINT

この文字列はファイル名の一部です。「constsnts」は、文字列の前のマイナス ( - ) 記号と中央の X (どちらも大文字でもそうでなくてもかまいません) です。

THISの助けを借りて、次の表現を思いつきました。

^(?:(?!STRING).)*$

または私の場合:

^(?:(?!x).)*$

しかし、それは、を含むすべてのファイル名を除外しますx

x桁数がわからないが、ファイル名の一部である前後に数字がある可能性があることを知っている場合、数字の両側に数字を追加するにはどうすればよいですか

(例: myfile-x1-456x789 VR myfile-x12)

x特定の 、またはX | x ...のための別のソリューションが必要です

4

2 に答える 2

1

逆検索(Linuxではgrepツール-vや引数を使用)を使用するか、PHPのpreg_grep()--invert-matchで@marioが提案するように使用できます。

あなたの質問に答えるには、この正規表現を使用してください:^(?!.*?-\d+[xX]\d+)(.*)$ 説明されたデモ

x両方を一致させるには、大文字と小文字を区別しない正規表現修飾子iを使用するか、使用する場合のみX使用できます。 (x|X)x

于 2013-03-19T02:02:06.137 に答える
0

なぜこれでPHPを使用するのですか? -L正規表現に一致しないファイルを見つけるには、grep のオプションを使用します。

grep -L -- '-\d+x\d+' *

--grep が正規表現がコマンド ライン オプションであると認識しないように、正規表現を a の後に配置する必要があります。

于 2013-03-19T04:50:54.783 に答える