2

特定のファイル名拡張子を再帰的に削除する正規表現を作成したいと思います (すべてではありません)。削除される拡張子は.ready.done、および.errorです。一致は、単一のグループ アイテムを通じて利用できるようにする必要があります。

例えば:

HelloWorld.xml             --> HelloWorld.xml
Hello@World.xml.ready      --> Hello@World.xml
Yaba_Daba-Doo.aaa.orig     --> Yaba_Daba-Doo.aaa.orig
HelloWorld.xml.ready.error --> HelloWorld.xml
yogibear.xml.ready.done    --> yogibear.xml
HelloWorld.bbb.done        --> HelloWorld.bbb
Merry Chrismas.ready.yyy   --> Merry Chrismas.ready.yyy

だから、私は次の単純な正規表現を思いついた -^(.+)(?:\.(?:ready|done|error))*$

(.+)残念ながら、貪欲な一致のように見えるため、期待どおりには機能しません。

PS 残念ながら、それは任意のファイル名である可能性があります。私が望む唯一のことは、末尾.readyの 、.doneおよび/または.error. コードでできることはわかっていますが、可能だと感じているので、正規表現でこれに取り組む方法を知りたいと思っています。

4

3 に答える 3

0

これを試して

String[] test ={ "HelloWorld.xml", "HelloWorld.xml.ready", "HelloWorld.xml.orig", "HelloWorld.xml.ready.error", "HelloWorld.xml.ready.done", "HelloWorld.bbb.done", "HelloWorld.ready.yyy" };
var query = test.ToArray().Where(c => Regex.IsMatch(c,"(?:error|done|ready)$"));
foreach (String field in query)
{
    Console.WriteLine(field);
}
于 2013-08-01T14:18:18.650 に答える