2012-03-16 4 views
0

ここで私がC#で何をしようとしているのかについて、高レベルで説明しましょう。(言語は私が持っている質問とは関係がありません)ファイル内で検索するための非定型正規表現

私は例えば、これらの複数のファイルに

をデータとディレクトリ構造のリンクを多く含むファイル(私たちはテキストファイルを言わせて)、の束を持っている: - ファイルmyfile.txtのは次のようになります。 。

​​

私は何をしているのは、彼らがしているディレクトリ構造を持つすべてのこれらのファイルのリストを取得することです幸いなことに、それらのすべてがDにあります。/しかし、ディレクトリの最大3つのレベルであっすることができそこにファイルが存在する可能性があります。

私はすべてのコードを書いており、私が混乱しているのはファイルパターンを探すための正規表現です。これは私の頭の中でファイルを探すために持っていたAlgoです: - 1. Dを探すファイルを探します:/ 2. '/。 (ドット)に遭遇する(これはディレクトリ構造とファイルの名前を構成する) 3.次の3/4文字(ファイル拡張子)を取得する - MS Officeファイルの種類が異なるため、私は心配しません。(ドット)

後3つのまたは4文字を探すべきかどうかについてはあまり私は私がで立ち往生していたものととしてまとめてみましょう - 正規表現検索パターンが///filename.extension

を探すために、その後、ファイルが存在するかどうかを確認し、その内容を調べる必要があります。

何か助けていただければ幸いです。

これが何をすべき少し後戻りして

答えて

0

:あなたは複数行オプションでそれを使用する必要があります

^D:/.*/(.*) 

。例えば

Regex rx = new Regex("^D:/.*/(.*)", RegexOptions.Multiline); 
var str = @"This is a text file. This file has very few lines of data like bla bla bla and links like 
D:/Presentations/Sales/Demo.pptx 
and more links like 
D:/Word_documents/Studies/worddoc.doc"; 

var matches = rx.Matches(str); 
var names = matches.Cast<Match>().Select(p => p.Groups[1].ToString()).ToArray(); 
0

私はあなたのニーズとりうる限りを理解しようとしました。ここで

は、このことができます任意のWindowsまたはUNCパスの一致(あなたが要求したとして、3つのまたは4文字と拡張子を含むファイル名で)

(?:\b[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*\.[^\\/:*?"<>|\r\n]{3,4}

希望を見つける正規表現です。

関連する問題