2016-04-12 14 views
2

私は文字列からエスケープ引用された単語を抽出する必要がある小さなC#プログラムを実行しています。 linqpadから正規表現の結果の文字列の最初と最後のqoutationを除外

サンプルコード:

string s = "action = 0;\r\ndir = \"C:\\\\folder\\\\\";\r\nresult"; 
var pattern = "\".*?\""; 
var result = Regex.Split(s, pattern); 
result.Dump(); 

入力(実際の入力がより多くを含んでいる偶数の引用符をエスケープ):結果

"C:\\folder\\" 

期待

"action = 0;\r\ndir = \"C:\\\\folder\\\\\";\r\nresult" 

実際結果(2件)

"action = 0; 
dir = " 
_____ 
"; 
result" 

私は、私が必要とするものとまったく逆の結果になります。どのように正規表現を実際の文字列の開始(および終了)引用符を無視することができますか?なぜそれが検索に含まれていますか?私はsimilarの質問から正規表現を使用したが、まだ意図した結果を得ることはできません。私はエスケープ引用符でフィルタリングしたいだけです。

+0

'Regex.Split'は、文字列を2つに分割し、**一致する式を削除する**ために使用されます。 –

答えて

2

代わりのRegex.Splitを使用して、Regex.Matchを試してみてください。

+1

ありがとう!私はこれの後にあるように見える: 'var result = Regex.Matches(s、pattern);' –

0

RegExは必要ありません。単にString.Split(';')を使用し、2番目の配列要素に必要なパスがあります。あなたは部分を取り除くためにRemove()と引用符を取り除くためにそれからTrim()それをすることができます。ような何か:

result = s.Split(';')[1].Trim("\r ".ToCharArray()).Remove(0, 7).Trim('"'); 
関連する問題