using System; //abc static void Match_ABC(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; const string pattern = @"abc"; if(input[0..3].SequenceEqual(pattern)) { ptr += 3; region_end = ptr; } } //a[abc]d static void Match_A_charset_ABC_C(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; if(input[0] == 'a' && (input[1] == 'a' || input[1] == 'b' || input[1] == 'c') && input[2] == 'd') { ptr += 3; region_end = ptr; } } //[abc] static void Match_charset_ABC(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; if(input[0] == 'a' || input[0] == 'b' || input[0] == 'c') { ptr += 1; region_end = ptr; } } //. static void Match_Dot(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; ptr += 1; region_end = ptr; } //a{3,5} static void Match_A_3_5(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; do { if(input[ptr..].StartsWith("aaa")) { ptr += 3; region_end = ptr; } else { break; } for(int i = 0; i < 2; i++) { if(input[ptr] == 'a') { ptr += 1; region_end = ptr; } else { break; } } } while(false); } //(ab){2,3} static void Match_AB_2_3(ReadOnlySpan input) { int ptr = 0; int region_start = ptr; int region_end = region_start; do { if(input[ptr..].StartsWith("abab")) { ptr += 4; region_end = ptr; } else { break; } for(int i = 0; i < 1; i++) { if(input[ptr..].StartsWith("ab")) { ptr += 2; region_end = ptr; } else { break; } } } while(false); }