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

expect中的正则匹配[通俗易懂]文档原文:xpect_out(x,string)expect_out(x,start|end)如果expect匹配是采用高级正则表达式的话(-re参数表示高级正则表达式方式匹配),那么每个子模式都有一个序号,序号从1-9,如:setoutput”abbbcabkkkka”expect-indices-re”b(b*).*(k+)”$output那么:setexpect_out(0,start)==>

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

文档原文:

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

Jetbrains全家桶1年46,售后保障稳定

解释:

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
第二个括号的startend都是10

注意.*在这里是贪婪匹配,也就是说会尽可能多的匹配
所以pattern的各个项对应关系:

匹配项 匹配值
b b
(b*) bb
.* cabkkk
(k+) k
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • redis 击穿 穿透_redis穿透击穿雪崩

    redis 击穿 穿透_redis穿透击穿雪崩本文分享自华为云社区《【高并发】什么是缓存穿透?击穿?雪崩?如何解决?》,作者:冰河。缓存穿透首先,我们来说说缓存穿透。什么是缓存穿透呢?缓存穿透问题在一定程度上与缓存命中率有关。如果我们的缓存设计的不合理,缓存的命中率非常低,那么,数据访问的绝大部分压力都会集中在后端数据库层面。什么是缓存穿透?如果在请求数据时,在缓存层和数据库层都没有找到符合条件的数据,也就是说,在缓存层和数据库层都没有命中数据,那么,这种情况就叫作缓存穿透。我们可以使用下图来表示缓存穿透的现象。造成缓

    2025年11月16日
    2
  • awk与sed:关于多行的样本

    awk与sed:关于多行的样本

    2022年1月1日
    40
  • 网站渗透测试

    网站渗透测试目录[TOC]公司的网站需要渗透测试,学习了一下渗透测试的方法,记录下,方便后期查阅。(1)暴力激活成功教程1.1风险分析:数据传输过程使用非加密的http协议,因此可对数据传输过程进行抓包分析;用户名、密码明文,且未设置验证码,导致可进行暴力激活成功教程,以获取身份凭证信息1.2加固建议1:使用https加密传输可以在apache或者tomcat下配置好证书,启用https就ok,网上很多

    2022年6月16日
    26
  • Android常用控件

    Android常用控件TextView显示文本<TextViewandroid:id="@+id/text_view"android:layout_width="match_pa

    2022年7月2日
    22
  • Mac的shell命令大全

    Mac的shell命令大全最近实习发现自己linux命令掌握的很差,特此再整理一下自己所遇到的命令查看自己的maxOSX所用的是什么shellecho$SHELL查看所有支持的shellcat/etc/shells显示当前路径下所有的文件ls显示当前路径下的所有的文件,包括隐藏文件ls-a显示bin下的文件lsbin显示bin下包括隐藏文件在内的所有文件ls-abinls-l显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行ls-lh显示文件的

    2022年10月17日
    3
  • JavaScript如何判断一个值是不是数字?「建议收藏」

    JavaScript如何判断一个值是不是数字?「建议收藏」第一种方法:isNaN()使用js自带全局函数isNaN(),isNaN()返回一个Boolean值,如下:varc="hello";//字符串isNaN(c);//返回一个false;varc=10;//数字inNaN(c);//返回一个true如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨。第二种方法:正则表达式functioncheckNu…

    2022年4月20日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号