e_utils::system::regex

Function regex2

Source
pub fn regex2<'a>(input: &'a str, pattern: &'a str) -> (bool, Option<&'a str>)
Expand description

在输入字符串中搜索匹配给定模式的行

§参数

  • input - 要搜索的输入字符串
  • pattern - 搜索模式

§返回值

返回一个元组 (bool, Option<&str>),其中:

  • 布尔值表示是否找到匹配
  • Option<&str> 包含匹配的子字符串(如果找到)

§示例

 let test_str = "test\nexe \"Number 123 321-\"\n更多测试2\n12";
let inputs = [
  (test_str, "!ABC123", true, Some("test\nexe \"Number 123 321-\"\n更多测试2\n12\n1xxx Done W  \"1a2\"\nNNNWD Done R   TEST1")),
  (test_str, "!Done R   ", false, Some("NNNWD Done R   TEST1")),
  (test_str, "$ Done R   TEST1", true, Some("NNNWD")),
  (test_str, "Done W  \"$\"", true, Some("1a2")),
  (test_str, "Done R   $", true, Some("TEST1")),
  (test_str, "tes~", true, Some("tes")),
  (test_str, "tes*", true, Some("test")),
  (test_str, "*123*", true, Some("exe \"Number 123 321-\"")),
  (test_str, "更多测试2", true, Some("更多测试2")),
  (test_str, "*123~", true, Some("exe \"Number 123")),
  (test_str, "~123*", true, Some("123 321-\"")),
  (test_str, "123*", false, Some(test_str)),
  (test_str, "123", false, Some(test_str)),
  (test_str, "~123", false, Some(test_str)),
];
for (input, pattern, expected_match, expected_capture) in &inputs {
  let result = regex2(input, pattern);
  println!(
    "Input: '{}', Pattern: '{}', Result: {:?}",
    input, pattern, result
  );
  assert_eq!(result, (*expected_match, *expected_capture));
}