-1

私のファイルは

> A B C D unuse data  <begin> Addd as ss 1 My name is 2323 33 text 
> </end> 34344 no need

そして私のコードは

StringBuilder mSb = new StringBuilder();
           StreamReader sr = new StreamReader(@"E:\check.txt");
           String line;

           while (sr.ReadLine() != null)
           {

               mSb.AppendLine(sr.ReadLine());

           }
string matc = new Regex(@"(<begin>)(\n?.*)*</end>)?").Match(mSb.ToString()).ToString();

ここではすべてのファイルを読み取っていますが、削除するまでは必要ですか? 最後から、私のプログラムはクラッシュしています..

4

3 に答える 3

0

あなたは次のようなものを探していると思います

var text = File.ReadAllText(@"E:\check.txt");
var match = Regex.Match(text, @"(?s)<begin>.*?</end>").Value;
于 2012-12-13T17:02:10.907 に答える
0

最終的なコードは次のようになります。

var text = System.IO.ReadAllText(@"E:\check.txt");
var match = Regex.Match(text, @"<begin>(.*?)</end>", RegexOptions.SingleLine);
string matc = match.Success ? match.Groups[1].value : null;

これがあなたの探求に役立つことを願っています.

于 2012-12-13T17:09:23.537 に答える
0

使用する前に、一致の値を確認してください。また、ストリームを処理する代わりに File.ReadAllText を使用します。

//var data = File.ReadAllText(@"C:\MyFile.txt")

string data = @"> A B C D unuse data  <begin> Addd as ss 1 My name is 2323 33 text
> </end> 34344 no need";

var mtch = Regex.Match(data, @"((<begin>)(.+?)(</end>))", RegexOptions.Multiline | RegexOptions.Singleline );

if (mtch.Success)
   Console.WriteLine (mtch.Groups[0].Value);
else
   Console.WriteLine ("Failure to match");

/* Outputs

<begin> Addd as ss 1 My name is 2323 33 text
> </end>

*/
于 2012-12-13T17:12:38.953 に答える