• ベストアンサー

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

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

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

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

文字列マッチングのデフォルトは最長一致なので、その結果は合ってます。 ご希望は最短一致のようなので、 match = Regex.Match(line, "^(.*?);"); で、match.Groups[1].Valueかなあ?

参考URL:
http://php-web.net/regular/matching.html
abcron
質問者

お礼

かなり悩んでいたので助かりました。 魔法のキーワード「?」をもっと調べてみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現で「)」がメタ文字の理由?

    Perlの正規表現で、「)」(カッコ閉じ)は、「(」(カッコ開け)同様メタ文字で、もし/)/のようなマッチ演算子を書いて、「)」という文字列を検索しようとすると、Unmatched ) in regexというエラーになります。 しかし、「]」(角カッコ閉じ)や、「}」(中かっこ閉じ)は、メタ文字ではなく、/]/、/}/のようなマッチ演算子は正当で、それぞれ]、}をきちんと検索するのです。 「[」(角カッコ開け、文字クラスを作る)や、「{」(中かっこ開け)はメタ文字なのに、です。 開けがこないのに閉じが来た場合、]と}はエラーにならないのに、)だけはエラーになります。 これは、なぜでしょうか。

    • ベストアンサー
    • Perl
  • 正規表現で完全一致したキーワードのみ置換したい

    例えば、 SLEEP AND ASLEEPの文字列から SLEEPを検索し、.zZに変換したいと思います。 しかし、ASLEEPにはHITして欲しくありません。 正規表現でSLEEPだけマッチングさせるには、 どのような式を与えたら良いでしょうか? そのまま置換に使用したいので、 取得結果としては、オフセット(0,5)が取得できて欲しいです。 正規表現には、POSIXのregexを使用します。

  • 正規表現について教えてください

    検索文字列 [0-9][a-c]* 置き換え文字列 Result 対象文字列 123abcabc とすると 結果 ResultResultResult となります。 (テストはDelphi XE5 Starterで行っていますが、サイトのPHP正規表現チェッカーでも同じ結果です。 これを3abcabcにマッチさせて結果が12Resultとなるようにしたいのですがどう記述すればいいのでしょうか?

  • 正規表現について

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

  • 正規表現について

    /^R|ruby$/ 上記のような正規表現があったとします。 この正規表現の【|】の判断がわかりません。具体的には、/^ $/という記述から 対象の文字列の先頭がRかrのどちらかで以降がubyと続く文字列にマッチという 意味だと解釈しているのですが違うのでしょうか? 具体的にはRubyという文字列かrubyという文字列の二つのうちどちらかにしか マッチしないとおもっていたのですが、 rrubyという文字列やRrubyという文字列にもマッチします。そもそもこの場合のR|rの箇所ですが、これはRかrのどちらかが先頭にあり 二文字目からはubyという文字列がつづきますよ。という正規表現ではないのでしょうか? かなりこまっています。 識者のかたご教授ください。

  • 正規表現の逆?

    検索対象の文字列が、正規表現で言うなら あい(う|え)かきく(け|こ)さ・・・ という感じであります。 それを検索したい文字列(1000個程度)の入ったファイルを順に読み込み、マッチしたら切り出し、さらに検索を続けて切り出していくという処理をしたいのですが、何から手をつけていいかわかりません。 どなたか教えてください。

  • grepにマッチした正規表現の文字列を取得したい

    grepにマッチした正規表現の文字列を取得し、マッチした文字列を 一覧で取得したいのですが、方法がわかりません。 ※例 grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名 不明点あればお知らせください。 よろしくお願いします。

  • VB.NETの正規表現の書き方を教えてください。

    下のような改行を含む文字列から、1や2を指定してデータ1、データ2を取得したいです。 決まった文字列(変更のない)はNAMEのみで、 取得したい文字列ですが、例えば2を指定した場合は 具体的には NAME=b12345 A=b12345 B=b98765 C=bXYZ このような内容を取得したいです。 -------------------------------------- abcde aiueokakikukeko ここに改行を含むいろな文字列がある場合とない場合があります。 asdfghj NAME=a12345 A=a12345 B=a98765 C=aXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 NAME=b12345 A=b12345 B=b98765 C=bXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 NAME=c12345 A=c12345 B=c98765 C=cXYZ ここに改行を含むいろな文字列がある場合とない場合があります。 -------------------------------------- 正規表現の部分は現在はこのように書いてあります。 Dim i As Integer = 2 Dim reg As Regex Dim m As Match Dim Target As String reg = New Regex("", RegexOptions.Compiled Or RegexOptions.Multiline) m = reg.Match(Data) If m.Success = True Then Target = reg.Match(Data).Result("${Target}") End If Console.WriteLine(Target) 数量の指定をすれば何とかなりそうだと思ったのですが、 試行錯誤しても思うように取り出すことが出来ず 申し訳ないのですが、適切な書き方をご教示頂ければ幸いです。

  • 正規表現の仕様について

    "abcdefg"という文字列に対して、/a(bc|bcd)/ という正規表現で検索すると 秀丸エディタの正規表現検索では、"abcd"がマッチし、 スクリプト言語のrubyでは"abc"がマッチします。 これは使用している正規表現ライブラリで演算子'|'の評価の仕方が異なるのだと思うのですが、統一された仕様のようなものは存在しないのでしょうか? 他の正規表現ライブラリ間でもこのような細かな動作の違いというのは存在するのでしょうか?

  • C#で正規表現

    C#で、HTML形式で書かれた文字列から情報取得したいと思っています。 その際に使う文字列判別のための正規表現についてご助言ください。 現在、Regex.Replaceで、<>カッコに囲まれた部位は削除、残りの文字列を解析して情報取得しています。 これをHTMLのテーブル、つまり<td></td>※で囲まれた文字列を取得するよう仕様変更したいと思っています ※実際は<td width=・・・・>などとなります。 このサイトのページ最下部のC#ソースにありますような書き方をしようと思っています。 http://dobon.net/vb/dotnet/string/regexmatch.html 以上が、質問概要です。 私が正規表現を書いたとき分からなかった点は、 1.”(半角のダブルクォーテーション)の扱い・指定方法 2.<td></td>で囲まれた、というような表現の具体的な書き方 3.<td></td>内には<font>などのさらに<>で囲まれた部位が混入、その対処方法 参考までに、処理対象となるサイトはこちらになります。 http://www.traders.co.jp/stocks_data/data/brand_move/brand_move.asp 以上よろしくお願いいたします。

このQ&Aのポイント
  • iMacをバージョンアップしたらEP-704Aのプリントができなくなってしまった。
  • システム環境でプリンターとスキャナを開けるとEP-704Aが待機中になっている。
  • 質問者はiMacのバージョンを10.12から12.6にアップグレードしましたが、それ以降EP-704Aのプリントができなくなりました。システム環境でプリンターとスキャナを確認するとEP-704Aが待機中になっている状態です。どうすればプリントができるようになるでしょうか?
回答を見る

専門家に質問してみよう