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))
}