E0058

E0058#

警告名称:unused_non_capturing

正则表达式中存在不必要的非捕获分组。

当正则表达式包含不需要的非捕获分组时发出此警告。可删除多余分组以简化正则。

错误示例#

///|
test {
  let text = "xxabcyy"
  if text =~ (re"a(?:b)c", before~, after~) {
    inspect(before, content="xx")
    inspect(after, content="yy")
  } else {
    fail("")
  }
}

建议#

移除多余的非捕获分组。如果需要使用匹配到的部分,请用 as 绑定该正则子表达式。正则命名捕获组可通过 Regex::executeMatchResult::named_group 获取,但它们不是 =~ 表达式中的绑定项:

///|
test {
  let text = "xxabcyy"
  if text =~ (re"a" + (re"b" as middle) + re"c", before~, after~) {
    inspect(before, content="xx")
    inspect(middle, content="b")
    inspect(after, content="yy")
  } else {
    fail("")
  }
}