3
3
4
4
use memchr:: { memchr as find_char, memmem, memrchr as find_char_reverse} ;
5
5
use once_cell:: sync:: Lazy ;
6
- use regex:: { Regex , RegexSet } ;
6
+ use regex:: {
7
+ bytes:: Regex as BytesRegex , bytes:: RegexBuilder as BytesRegexBuilder ,
8
+ bytes:: RegexSet as BytesRegexSet , bytes:: RegexSetBuilder as BytesRegexSetBuilder , Regex ,
9
+ } ;
7
10
use serde:: { Deserialize , Serialize } ;
8
11
use thiserror:: Error ;
9
12
@@ -180,8 +183,8 @@ impl From<&request::RequestType> for NetworkFilterMask {
180
183
181
184
#[ derive( Debug , Clone ) ]
182
185
pub enum CompiledRegex {
183
- Compiled ( Regex ) ,
184
- CompiledSet ( RegexSet ) ,
186
+ Compiled ( BytesRegex ) ,
187
+ CompiledSet ( BytesRegexSet ) ,
185
188
MatchAll ,
186
189
RegexParsingError ( regex:: Error ) ,
187
190
}
@@ -191,11 +194,11 @@ impl CompiledRegex {
191
194
match & self {
192
195
CompiledRegex :: MatchAll => true , // simple case for matching everything, e.g. for empty filter
193
196
CompiledRegex :: RegexParsingError ( _e) => false , // no match if regex didn't even compile
194
- CompiledRegex :: Compiled ( r) => r. is_match ( pattern) ,
197
+ CompiledRegex :: Compiled ( r) => r. is_match ( pattern. as_bytes ( ) ) ,
195
198
CompiledRegex :: CompiledSet ( r) => {
196
199
// let matches: Vec<_> = r.matches(pattern).into_iter().collect();
197
200
// println!("Matching {} against RegexSet: {:?}", pattern, matches);
198
- r. is_match ( pattern)
201
+ r. is_match ( pattern. as_bytes ( ) )
199
202
}
200
203
}
201
204
}
@@ -1225,15 +1228,15 @@ pub fn compile_regex(
1225
1228
CompiledRegex :: MatchAll
1226
1229
} else if escaped_patterns. len ( ) == 1 {
1227
1230
let pattern = & escaped_patterns[ 0 ] ;
1228
- match Regex :: new ( pattern) {
1231
+ match BytesRegexBuilder :: new ( pattern) . unicode ( false ) . build ( ) {
1229
1232
Ok ( compiled) => CompiledRegex :: Compiled ( compiled) ,
1230
1233
Err ( e) => {
1231
1234
// println!("Regex parsing failed ({:?})", e);
1232
1235
CompiledRegex :: RegexParsingError ( e)
1233
1236
}
1234
1237
}
1235
1238
} else {
1236
- match RegexSet :: new ( escaped_patterns) {
1239
+ match BytesRegexSetBuilder :: new ( escaped_patterns) . unicode ( false ) . build ( ) {
1237
1240
Ok ( compiled) => CompiledRegex :: CompiledSet ( compiled) ,
1238
1241
Err ( e) => CompiledRegex :: RegexParsingError ( e) ,
1239
1242
}
0 commit comments