3

ac#プロジェクト用の単一のFileSystemWatcherオブジェクトと、イベントが発生したときに一致する複数のパターンがあります。

プロジェクトの要件として、複数のFileSystemObjectを作成し、個々のフィルターメソッドを使用してパターンを一致させることはできません。したがって、すべてのファイルを監視するように1つのフィルターを設定する必要が*.*あります。イベントが作成されると、ループ内のパターンごとに一致するファイルを処理するために正規表現を適用する必要があります。私のパターンには*、Filterメソッドに渡す方法と同じように文字が含まれます。

組み込みのフィルター機能を単一の正規表現ステートメントで複製するにはどうすればよいですか?

多くのFileSystemWatcherフィルターシナリオの一部。

  • pi*.txt(これらは一致する必要があります:piano.txt、pie.txt)
  • *.doc.doc拡張子を持つものはすべて一致する必要があります)
  • 04*2013.txt(任意のテキストファイルで、4月の任意の日である必要があります)
  • pi*ar*.jpg(プレフィックスはpiで、ファイル名の任意の場所にプレフィックスの後にarが含まれ、 jpg拡張子である必要があります)
  • pre*ar*pre(接頭辞がpreで、その後にarが続き、その後に別のpreが続くファイル)
  • *.*(何でも受け付けます)
4

2 に答える 2

3

数年前、私は自分の仕事に似たようなものを書きました

public static string WildcardPatternToRegexPattern(string pattern)
{
    return string.Format("^{0}$", Regex.Escape(pattern.Replace('/', Path.DirectorySeparatorChar)).Replace(@"\*", ".*").Replace(@"\?", "."));
}
于 2013-02-26T15:02:48.770 に答える
0

正規表現ステートメントの学習を検討している場合は、http://txt2re.com/を参照することから始めることができます。テキストを貼り付ける場合は、ポイントアンドクリックインターフェイスを使用して正規表現を生成できます。また、「preg」をグーグルで検索することをお勧めします。

于 2013-02-26T15:03:05.547 に答える