C#の正規表現0回か1回のマッチについて
下のコードで「}」この文字を1回か0回マッチするための正規表現の書き方を直前の文字「?」で判断しているのですが上のeventsではうまく消せるけど、下のeventsではうまく消せないという現象が起きてわかりません。
C#
1コード 2 string dec = Regex.Replace(decMatch.ToString(), @"#(.+)}?", "$1", RegexOptions.Singleline);
C#
1コード 2 string events = "#SELECT action1"; 3 string events = "#SELECT{あああああ}"; 4 //装飾 5 Match decMatch = Regex.Match(events, @"#(.+?)(action[0-9]+|})"); 6 Console.WriteLine(decMatch); 7//--------------------------------------------------------- 8 string dec = Regex.Replace(decMatch.ToString(), @"#(.+)}?", "$1", RegexOptions.Singleline); 9//--------------------------------------------------------- 10 Console.WriteLine(dec); 11 Console.WriteLine("装飾取得"); 12 string[] splits = Regex.Split(dec, @"[{\s]"); 13 14 //※以下 15 //index番号0:装飾関数 16 //index番号1:装飾で定義された文章を入れる 17 18 Console.WriteLine("装飾関数 :" + splits[0]); 19 Console.WriteLine("装飾の中の文章 :" + splits[1]);
期待する結果はこれです
C#
1コード 2//上のイベント 3#SELECT = SELECT; 4action1 = action1; 5 6//下のイベント 7#SELECT = SELECT; 8{あああああ} = あああああ;
ほかに書き方で間違えがあれば教えていただきたいです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/02 12:13