-
Notifications
You must be signed in to change notification settings - Fork 0
/
Regexindex.cs
126 lines (74 loc) · 2.77 KB
/
Regexindex.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# if false
using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections;
using System.Diagnostics;
using System.Text.RegularExpressions;
public static class Programm {
public static void Main(string[] args) {
Console.WriteLine("==== RegexIndex ====\n");
var input = @"
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &7423736368644821740 stripped
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &
MonoBehaviour:
";
var pattern = @"--- !u!\d+ &((-?\d+)|(\n))";
// var input = " b\nstbe\nrino";
// var pattern = @"b((e)|(\n))";
// var input = "hi\n";
// var pattern = "((i)|(\n))";
foreach (Match match in Regex.Matches(input, pattern)) {
Console.WriteLine($"match: {match}");
foreach (Group g in match.Groups) {
Console.WriteLine($"group: {g} index: {g.Index}");
}
var catchedEmpty = match.Groups[3].Index != 0;
if (catchedEmpty) {
Console.WriteLine($"empty catch: index: {match.Groups[3].Index}");
Console.WriteLine($"rest substring:");
Console.WriteLine(input.Substring(match.Groups[3].Index));
}
var catchedFull = match.Groups[2].Index != 0;
if (catchedFull) {
Console.WriteLine($"catched full {match.Groups[2]} index: {match.Groups[2].Index}");
}
}
}
static void Example() {
var input = "hi";
var pattern = "((a)|(i))";
// match: i
// group: i index: 1 - whole match
// group: i index: 1 - first group ((a)|(i))
// group: index: 0 - the empty group that didn't caputure
// group: i index: 1 the group that captured
foreach (Match match in Regex.Matches(input, pattern)) {
Console.WriteLine($"match: {match}");
foreach (Group g in match.Groups) {
Console.WriteLine($"group: {g} index: {g.Index}");
}
}
}
// var input = "hello mofo diego &\n diego &10\n";
// var pattern = @"diego &(\d+)|(\n)";
// foreach (Match match in Regex.Matches(input,pattern)) {
// // if (match.Groups.Count == 2) {
// Console.WriteLine($"-- match with {match.Groups.Count} groups");
// Console.WriteLine(match);
// foreach (var g in match.Groups) {
// Console.WriteLine("group:");
// Console.WriteLine(g);
// // }
// // var g = match.Groups[1];
// // Console.WriteLine(g);
// // if (string.IsNullOrEmpty(g.ToString())) {
// // Console.WriteLine("adding empty string to lookup");
// // }
// }
// }
}
# endif