Closed abcfy2 closed 5 years ago
修复过程:
将expect脚本中{}
逃逸变量部分替换为""
,因为我发现使用了{}
之后没法逃逸{}
本身。比如set var {v\{a\}lue}
这么逃逸的话,得到的变量部分实际为v\{a\}lue
,所以改用引号赋值变量,这样需要逃逸三个特殊字符"
引号本身和变量引用字符$
,以及逃逸符反引号\
,通过正则替换掉即可
那个\\
是后来才加上去,想匹配\
字符本身,看来这个正则经过正则引擎解析之后又变了样了,以前没加最后的\\
是测试OK的,现在我改下重测下
现在测一下呢?我大概知道是怎么回事了,实际这个正则字符串需要经过两次转义。一次是string本身的转义,交给正则引擎,正则引擎还需要再做一次解析。
所以要匹配\
这个字符串,在正则引擎看到的字符串必须是\\
,那么正则字符串必须是\\\\
vala 可以用 """
做 verbatim string/原始字符串。
哦,原来vala有类似于python的raw string的功能啊,如果改用原始字符串这种形式的话的确对正则友好,不需要考虑正则表达式本身的转义了
是,不过感觉 vala 这个原始字符串("""string"""
)没 c# 的(@"string"
)看着方便。
fix #160