「test2」要素が欠落しているときに「test1」値を正しく解析する次の C# RegEx 式で「test2」をオプションの要素にする方法は?
StringBuilder sb = new StringBuilder();
sb.AppendLine(" test1=123 any text in between ");
sb.AppendLine(" some ");
sb.AppendLine(" more ");
sb.AppendLine(" text in between ");
sb.AppendLine(" test2=456 ");
sb.AppendLine(" test1=789 some text .. test2=012 ");
Regex regex = new Regex(@"test1=(?<test1>(\d+))((.|\s)+?)(test2=(?<test2>(\d+)))");
MatchCollection matches = regex.Matches(sb.ToString());
foreach (Match match in matches)
{
Group test1 = match.Groups["test1"];
Group test2 = match.Groups["test2"];
System.Console.WriteLine("Test1 = {0}, Test2 = {1}", test1.Value, test2.Value);
}
ありがとうございました。
@Oded - コメントを適切にフォーマットできず、返信が StackOverflow コメント テキストの長さで許可されているよりも長いため、ここに返信します。
ありがとうございました。2 番目の返信で提案された RegEx 式は、次の出力になります。
Test1 = 123, Test2 =
Test1 = 789, Test2 =
それは完全に正しくありません。そして、最初の返信の正規表現式は次のようになります
Test1 = 123, Test2 = 456
Test1 = 789, Test2 = 012
テスト出力。それは正しいです。
でも私が変われば
sb.AppendLine(" test1=789 some text .. test2=012 ");
に
sb.AppendLine(" test1=789 some text .. test52=012 ");
テスト結果の出力には1行しかありません
Test1 = 123, Test2 = 456
そして、私はそれが欲しかった
Test1 = 123, Test2 = 456
Test1 = 789, Test2 =
その場合。