E4210

E4210#

编译器诊断名称:regex_alias_in_alternation

正则别名不能出现在交替分支内部。

在正则匹配表达式中,as 会绑定匹配到的文本。当模式使用 | 进行交替匹配时,应绑定整个交替模式,而不是只绑定其中一个分支。否则该绑定只会在部分分支中存在。

错误示例#

fn match_text(s : String) -> Unit {
  ignore(s =~ ((re"a" as left) | re"b"))
}

只有第一个分支匹配时,left 才会被绑定。

建议#

将别名移到交替模式外部,使其无论哪个分支匹配都会被定义。

fn match_text(s : String) -> Unit {
  ignore(s =~ ((re"a" | re"b") as either))
}