@@ -24,9 +24,10 @@ func _firstMatch(
24
24
_ regexStr: String ,
25
25
input: String ,
26
26
validateOptimizations: Bool ,
27
+ semanticLevel: RegexSemanticLevel = . graphemeCluster,
27
28
syntax: SyntaxOptions = . traditional
28
29
) throws -> ( String , [ String ? ] ) {
29
- var regex = try Regex ( regexStr, syntax: syntax)
30
+ var regex = try Regex ( regexStr, syntax: syntax) . matchingSemantics ( semanticLevel )
30
31
guard let result = try regex. firstMatch ( in: input) else {
31
32
throw MatchError ( " match not found for \( regexStr) in \( input) " )
32
33
}
@@ -54,6 +55,7 @@ func flatCaptureTest(
54
55
dumpAST: Bool = false ,
55
56
xfail: Bool = false ,
56
57
validateOptimizations: Bool = true ,
58
+ semanticLevel: RegexSemanticLevel = . graphemeCluster,
57
59
file: StaticString = #file,
58
60
line: UInt = #line
59
61
) {
@@ -63,6 +65,7 @@ func flatCaptureTest(
63
65
regex,
64
66
input: test,
65
67
validateOptimizations: validateOptimizations,
68
+ semanticLevel: semanticLevel,
66
69
syntax: syntax
67
70
) else {
68
71
if expect == nil {
@@ -113,6 +116,7 @@ func matchTest(
113
116
dumpAST: Bool = false ,
114
117
xfail: Bool = false ,
115
118
validateOptimizations: Bool = true ,
119
+ semanticLevel: RegexSemanticLevel = . graphemeCluster,
116
120
file: StaticString = #file,
117
121
line: UInt = #line
118
122
) {
@@ -126,6 +130,7 @@ func matchTest(
126
130
dumpAST: dumpAST,
127
131
xfail: xfail,
128
132
validateOptimizations: validateOptimizations,
133
+ semanticLevel: semanticLevel,
129
134
file: file,
130
135
line: line)
131
136
}
@@ -143,6 +148,7 @@ func firstMatchTest(
143
148
dumpAST: Bool = false ,
144
149
xfail: Bool = false ,
145
150
validateOptimizations: Bool = true ,
151
+ semanticLevel: RegexSemanticLevel = . graphemeCluster,
146
152
file: StaticString = #filePath,
147
153
line: UInt = #line
148
154
) {
@@ -151,6 +157,7 @@ func firstMatchTest(
151
157
regex,
152
158
input: input,
153
159
validateOptimizations: validateOptimizations,
160
+ semanticLevel: semanticLevel,
154
161
syntax: syntax)
155
162
156
163
if xfail {
0 commit comments