E4220#
Compiler diagnostic name: regex_match_binding_not_supported.
lexscan ... with longest case 使用了最长匹配模式不支持的 before= 绑定。
对于 String 和 StringView 输入,首次匹配模式同时支持 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
_ => ""
}
}