2016-09-23 16 views
0

テキストのさまざまな行に3つの引用符(" "")が含まれているテキストファイルがあります。それはまたすべての行にそれの前に6つの空白スペースを持っています。 私は@ "\ s {6} \" {3} "やさまざまなケースをやってみましたが、3つの引用符を一緒に見たときにC#が好きではないようです。それとは後に新しい行を追加しC#正規表現の一致三重引用符 "" "

これは私がしようとしたものです:。

string pattern4 = @"\s{6}"{3}"; 

var match4 = Regex.Match(body, pattern4, RegexOptions.Multiline); 
while (match4.Success) 
{ 
    string index = """; 
    output.Insert(index, "\r\n"); 
} 

サンプル入力

"""Step: 33 And I enter 

    Step: 34 And I set the 

所望の出力:

""" 

    Step: 33 And I enter  

    Step: 34 And I set THE 
+0

'文字列インデックス=は「」"; 'それは無効な構文であるあなたの文字列は二重引用符で終わるあなたが含まれている文字列をしたい場合。 '' \ "" 'を使用してください(引用符をエスケープしてください)。 – Hosch250

+0

ありがとうございますパターンと同じですか? – Dnguy025

+0

正規表現をうまく使用する方法がわかりません。正規表現を作成するときは、常に[Expresso](http://www.ultrapico.com/Expresso.htm)を使用します。しかし、はい、それは正規表現パターンでも文字列を終了します。 – Hosch250

答えて

0

逐語的な文字列内の引用符をエスケープするには(@で始まる)、二重引用符を使用します。あなたはこのように使用することができRegex.Replace方法もあります:

string input = @"  """"""Step: 33 And I enter 

Step: 34 And I set the "; 

string pattern = @"\s{6}""{3}"; 
string replacement = "\"\"\"\r\n"; 

string output = Regex.Replace(input, pattern, replacement); 
+0

交換で@を使用しないでください。そして、もし私が交換に6 \ sを追加したいのであれば、どうすればいいでしょうか? – Dnguy025

+0

この場合、希望する文字列の内容を表現するのがより難しくなるため、置換に@は使用しませんでした。 @はそれを逐語的な文字列にします。二重引用符を除くすべてのものをそのまま引用します。二重引用符はエスケープする必要があります。注意することは、\ r \ nで改行を表現できないことを意味します。実際には、それを得るために次の行に閉じる引用符を付ける必要があります。そして、逐語的な文字列の3つの引用符は@ "" "" "" "のようになります。置換に6 \ s(スペース)を入れるには、6スペースを入力してください。 – Mike

関連する問題