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)
上一篇 2025年8月9日 下午2:43
下一篇 2025年8月9日 下午3:15


相关推荐

  • Linux测试环境搭建apache+mysql+php

    Linux测试环境搭建apache+mysql+php

    2022年3月4日
    48
  • dlopen静态库_opensubwnd脚本函数的作用

    dlopen静态库_opensubwnd脚本函数的作用1、dlopen动态库失败原因,我碰到主要是以下几点(碰到新问题之后再完善,先打个点)①动态库位置没有放对地方,dlopen时候找不到你想操作的动态库解决办法:放到指定目录。②头文件没有包全,有不能识别的函数或者标识符解决办法:加一条打印信息,程序运行到这里,会输出不能识别标识符。if((handle=dlopen(myso,RTLD_NOW))==NULL){

    2022年9月30日
    5
  • SAE J1939介绍

    SAE J1939介绍CAN协议最初由美国博世公司提出,后来SAE在CAN2.0B的基础之上提出J1939协议,该协议主要面向客车和载重货车。J1939协议对应ISO提出的七层OSI模型中的物理层、数据链路层、网络层和应用层,除了这四层,为了保证数据的准确传输和故障诊断,J1939还具有网络管理和应用层诊断。物理层对应J1939-11、J1939-15;数据链路层对应协议中的J1939-21;网络层对应协议中的

    2022年5月1日
    115
  • CVPR 2026 Workshop征稿第六届AdvML@CV:多模态大模型智能体安全

    CVPR 2026 Workshop征稿第六届AdvML@CV:多模态大模型智能体安全

    2026年3月15日
    5
  • kafka介绍和使用[通俗易懂]

    kafka介绍和使用[通俗易懂]1.1.      主要功能根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:  1:Itletsyoupublishandsubscribetostreamsofrecords.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因  2:Itletsyoustorestreamsofrecordsin…

    2022年10月13日
    6
  • 爬虫(2)之re 爬取淘宝网「建议收藏」

    爬虫(2)之re 爬取淘宝网「建议收藏」我们通过requests可以很轻松地就获得网页上的所有内容,但是这些内容往往会夹杂着许多我们不需要的东西,因此我们需要解析和提取HTML数据。在先前介绍过的解析和提取html内容的库,只能够处理静态文本执行简单的搜索,缺乏灵活性,不能处理动态的文本信息。下面来介绍一下正则表达式。什么是正则表达式?正则表达式是用来简洁表达一组字符串的表达式正则表达式是一种通用的字符串表达框架正则表…

    2022年6月18日
    35

发表回复

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

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