前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >expect中的正则匹配[通俗易懂]

expect中的正则匹配[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-01 13:41:08
1K0
发布2022-11-01 13:41:08
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

文档原文:

代码语言:javascript
复制
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

解释:

代码语言:javascript
复制
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
代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档