2017-03-29 6 views
1

Path::Tinyを使用しています。オプションのQR //引数が指定されている場合にのみ与えられた正規表現に一致 子名のオブジェクトを返し、Path :: Tinyのファイルを除外ルックアヘッド正規表現を使用して除外

@paths = path("/tmp")->children(qr/\.txt$/); 

childrenとして使用することができます:それは方法があります。ベース 名前が

を一致させるために使用されているだけなので

@paths = path("/tmp")->children(qr/\A(foo|bar|baz)\z/); 

/tmpで見つかったfoobarbazファイルのいずれかを返します。

私は逆を必要としますが、ファイルはありませんが、(foo|bar|baz)は必要ありません。

以下は、不要なものを除外することができ、

@paths = grep { $_->basename !~ /^(foo|bar|baz)$/ } path("/tmp")->children; 

それについてqrを作成する方法を疑問に思います。

だから、質問:任意のファイルが、ないfoo|bar|baz:どのようにするためにqr式を作成するには?

私は否定先読みに

path(...)->children(qr/\A (?!(foo|bar|baz)) \z/x); 

を試みたが、それは私はそれが:)やるべきだと思う何をしません - 例えば私の正規表現は間違っています。

+0

http://stackoverflow.com/q/164414/1331451 woruld仕事を入れて、それは奇妙です。あなたはあなたの否定的な先読みでほぼ正しいですが、あなたは何かのような先読みの後に何かをマッチさせる必要があります: '(?!(foo | bar | baz))... ' – simbabque

答えて

4

\z内の負の先読み

qr/\A(?!(?:foo|bar|baz)\z)/ 
+0

はい - これは一つです!ありがとうございました。 – kobame

関連する問題