• ベストアンサー

C#の正規表現

C#の正規表現 こちらのサイトでも質問したんですが、言語がかわったのでふたたび質問させてください。 http://otasuke.goo-net.com/qa6249374.html C#で1行ずつテキストファイルよみこんで、マッチした語句がなんこ含まれてるかしりたいです。 C#はかなり初心者なので、教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

VC# 2010でテストしています。 テキストファイル"target.txt"はShift-JISで保存しておいてください。 なお、質問するときは使用している処理系のバージョンくらい書いておくのがベターです。 using System; using System.IO; using System.Text; using System.Text.RegularExpressions; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Regex rx = new Regex(@"\b(?<word>\w+)\b", RegexOptions.Compiled | RegexOptions.IgnoreCase); try { using (FileStream fs = new FileStream("target.txt", FileMode.Open)) { // S-JIS のテキスト ファイルとして開く。 using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding(932))) { const string targetWord = "foo"; string strLine; int lineNumber = 1; while ((strLine = sr.ReadLine()) != null) { MatchCollection matches = rx.Matches(strLine); int matchCount = 0; foreach (Match match in matches) { string word = match.Groups["word"].Value; if (word == targetWord) { matchCount++; } } Console.WriteLine("Line{0}: Count of \"{1}\" is {2}.", lineNumber.ToString("0000"), targetWord, matchCount); lineNumber++; } } } } catch (Exception err) { Console.WriteLine(err.ToString()); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(true); } } }

その他の回答 (1)

回答No.2

http://homepage3.nifty.com/midori_no_bike/CS/ このサイトはご存知ですか? C#を扱う上で非常に有用ですよ。 今回の質問ですと「ファイル関連」の項目にファイルの読み込み、 「数値/文字列」の項目に正規表現での文字列の検索が載っています。 (使い方はNo.1氏が既に提示されてますね)

関連するQ&A

  • c言語 正規表現

    c言語でCSVファイルに書かれている数字を集計するシステムを作っています。 Excelでは「*」が正規表現ですが、c言語では正規表現はありますか? よろしくお願いします。

  • 正規表現について

    いま.Netで正規表現にチャレンジしているのですが、どこが問題なのか分からず、投稿させていただきました。 正規表現のパターンです。 \\[Cc]\[(?<$0>[0-9]+),(?<$1>[0-9]+),(?<$2>[0-9]+)\] で、マッチさせたい文字列は、 \C[255,255,255] です。「[255,255,255]」の数字の部分は、一桁から三桁までの数字であれば何でもOKです。 マッチしないことは、http://jsregex.com/を使って調べました。 どうぞよろしくお願いします。

  • 正規表現を教えてください。

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • 正規表現

    PHPのプログラミングの勉強をしています。 正規表現を使って?の1文字をマッチさせたいのですが http://hogehoge.com/?hoge=hoge などの/?の場合は正規表現でマッチさせないようにしたいのです。 宜しくお願い致します。

    • 締切済み
    • PHP
  • ruby 正規表現

    こんばんは。 Rubyでの正規表現での質問なのですが、 例えば"hoge"という文字が含まれる行全体にマッチさせるような正規表現は存在するのでしょうか? また存在する場合はどのように記述すれば良いのでしょうか。 単純な質問で申し訳ありませんが、よろしくお願いいたします。

  • 正規表現  マッチさせれない C#

    下記のもの全体にマッチさせる表現を考えていたのですが、 どぉしても思いつきません。 まだまだ正規表現についてわかっていないのでご教授いただけないでしょうか。 /// <summary> /// メソッド1 /// </summary> /// <param name="Out">1:入力文字,2:出力文字)</param> /// 文字列     の部分は行が増えたり減ったりするので /// と文字列と改行文字で1つのくくりにして それを任意の回数繰り返しでマッチさせようとしています。 ([/// .*] \r\n)*   (///[.<>/]* \r\n)*  など試しましたがマッチしません。 そもそもこのようなものをマッチさせること自体無理なのかもしれませんが その点も含めご教授お願いいただけますでしょうか。言語はC#です

  • 正規表現について

    以下のようなファイル名にマッチする正規表現は [ファイル名] 20080303_001test.txt 20080303_002test.txt [正規表現] ^20080303_(001|002)test\.txt$ であってますでしょうか。 ※特に()内の、"001"と"002)test\.txt"のどちらかにマッチすれば良いという条件になってないか心配です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現

    正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。

  • indexと正規表現はどちらが早い?

    1行につき40文字前後で(固定長ではない)、1ファイルにつき約1億行書かれたファイル(1ファイルにつき3-5GB程度のテキストファイル)が30ファイルあります。ファイルは、すべてアルファベットで構成されていていますが、スペースは含まれておらず、各行の末端は改行(\n)で区切られています。これらのファイルからある特定の文字に完全にマッチする部分が含まれる行が各ファイルごとに何行あるのかを調べたいと思っています。検索する文字列の長さは10-20文字のものをいろいろと調べたいと思っています。 この作業をperlで行う場合、index関数を使って検索をするのと、正規表現を使って検索をするのでは、どちらが早いのでしょうか?もしくは、他に良い方法やmoduleがあるようでしたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • ruby 配列の中の正規表現は比較に使える?

    数万行あるテキストファイルの中を数百パターンくらいの正規表現で サーチするRubyスクリプトを作成しようとしていますがうまくできません。 どなたかお知恵を拝借させてください。 以下の流れで作ろうとしています。 「 ファイルを一行GETして、その行が事前に定義した配列内の正規表現に合致していればprintする。 次の行をGETして、最初からた正規表現の配列を比較して、合致していればprintする。 テキストファイルが終わるまで、繰り返し 」 何分初心者なもので…、他のやり方があれば教えていただきたいです… ヨロシクお願いしますm(__)m

    • ベストアンサー
    • Ruby