大家好,又见面了,我是你们的朋友全栈君。
文档原文:
xpect_out(x,string)
expect_out(x,start|end)
如果expect匹配是采用高级正则表达式的话(-re参数表示高级正则表达式方式匹配),那么每个子模式都有一个序号,序号从1-9,如:
set output "abbbcabkkkka"
expect -indices -re "b(b*).*(k+)" $output
那么:
set expect_out(0,start) ==> 1
set expect_out(0,end) ==> 10
set expect_out(0,string) ==> bbbcabkkkk
set expect_out(1,start) ==> 2
set expect_out(1,end) ==> 3
set expect_out(1,string) ==> bb
set expect_out(2,start) ==> 10
set expect_out(2,end) ==> 10
set expect_out(2,string) ==> k
set expect_out(buffer) ==> abbbcabkkkk
解释:
expect -indices -re "b(b*).*(k+)" $output
那么:
/set expect_out(0,start) <- 匹配项的起始位置 ==> 1
整个匹配项 ---set expect_out(0,end) <- 匹配项的结束位置 ==> 10
\set expect_out(0,string) <- 匹配项的具体内容 ==> bbbcabkkkk
/set expect_out(1,start) <- 匹配项的起始位置 ==> 2
第一个括号的匹配项---set expect_out(1,end) <- 匹配项的结束位置 ==> 3
\set expect_out(1,string) <- 匹配项的具体内容 ==> bb
/set expect_out(2,start) <- 匹配项的起始位置 ==> 10
第二个括号匹配项 ---set expect_out(2,end) <- 匹配项的结束位置 ==> 10
\set expect_out(2,string) <- 匹配项的具体内容 ==> k
输入的内容 ---set expect_out(buffer) ==> abbbcabkkkk
string=abbbcabkkkk
pattern :b(b*).*(k+)
第一个括号对应(b*)的左括号,此时在string中的位置是1
第二个括号的start和end都是10
注意.*在这里是贪婪匹配,也就是说会尽可能多的匹配 所以pattern的各个项对应关系:
匹配项 | 匹配值 |
---|---|
b | b |
(b*) | bb |
.* | cabkkk |
(k+) | k |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/203979.html原文链接:https://javaforall.cn