E4220

E4220#

Compiler diagnostic name: regex_match_binding_not_supported.

lexscan ... with longest case 使用了最长匹配模式不支持的 before= 绑定。

对于 StringStringView 输入,首次匹配模式同时支持 before=after=。最长匹配模式从输入开头开始,因此支持 after=,但不支持 before=

错误示例#

///|
pub fn first_word(input : String) -> StringView {
  lexscan input with longest {
    (re"^[a-z]+" as word, before=_) => word
    _ => ""
  }
}

建议#

移除 before=,用 ^ 锚定正则开头;需要未匹配的后缀时使用 after=

///|
pub fn first_word(input : String) -> StringView {
  lexscan input with longest {
    (re"^[a-z]+" as word, after=_) => word
    _ => ""
  }
}