如果您使用regex crate,则可以使模式不区分大小写:
\nlet re = Regex::new("(?i)\xce\xbc\xcf\x84\xcf\x82").unwrap();\nlet mat = re.find("\xce\x9c\xce\xa4\xce\xa3").unwrap();\nRun Code Online (Sandbox Code Playgroud)\n
您始终可以将两个字符串都转换为相同的大小写。这将在某些情况下有效:
let needle = "???";
let haystack = "???";
let needle = needle.to_lowercase();
let haystack = haystack.to_lowercase();
for i in haystack.matches(&needle) {
println!("{:?}", i);
}
Run Code Online (Sandbox Code Playgroud)
在其他情况下,正则表达式板条箱可以为您完成足够的大小写折叠:
extern crate regex;
use regex::RegexBuilder;
fn main() {
let needle = "???";
let haystack = "???";
let needle = RegexBuilder::new(needle)
.case_insensitive(true)
.build()
.expect("Invalid Regex");
for i in needle.find_iter(haystack) {
println!("{:?}", i);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,请记住,最终Rust的字符串是UTF-8。是的,您需要处理所有UTF-8。这意味着选择大写或小写可能会更改结果。同样,更改文本大小写的唯一正确方法是要求您知道文本的语言。它不是字节的固有属性。是的,您可以使用包含表情符号和基本多语言平面之外的其他令人兴奋的东西的字符串。
也可以看看: