gpt4 book ai didi

regex - 期望中的正则表达式

转载 作者:行者123 更新时间:2023-12-01 09:36:22 25 4
gpt4 key购买 nike

我刚开始学习期望脚本。我一直试图从我的输出中提取以下内容:

core.4046140998.01.10.133211

使用以下命令的期望脚本。有人可以告诉我我哪里出错了吗?我想将整个字符串(即(core.4046140998.01.10.133211*))存储在一个变量中并用它执行一些操作。
expect -re {^(core)\.*} {puts $expect_out(0,string)}

我是否必须导入任何包才能完成这项工作?

最佳答案

由于这是预期的,“核心”可能出现在一行的开头,但不会出现在输入字符串的开头。展示:

$ expect
expect1.1> spawn sh
spawn sh
8043
expect1.2> send "echo core.1234\r"
expect1.3> exp_internal 1
expect1.4> expect -re {^core.*}
Gate keeper glob pattern for '^core.*' is 'core*'. Activating booster.

expect: does "" (spawn_id exp6) match regular expression "^core.*"? Gate "core*"? gate=no
sh-4.3$ echo core.1234
core.1234
sh-4.3$
expect: does "sh-4.3$ echo core.1234\r\ncore.1234\r\nsh-4.3$ " (spawn_id exp6) match regular expression "^core.*"? Gate "core*"? gate=yes re=no
expect: timed out
expect1.5> expect -re {(?n)^core.*}
Gate keeper glob pattern for '(?n)^core.*' is 'core*'. Activating booster.

expect: does "sh-4.3$ echo core.1234\r\ncore.1234\r\nsh-4.3$ " (spawn_id exp6) match regular expression "(?n)^core.*"? Gate "core*"? gate=yes re=yes
expect: set expect_out(0,string) "core.1234\r"
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "sh-4.3$ echo core.1234\r\ncore.1234\r"
expect1.6> puts ">>>$expect_out(0,string)<<<"
<<<core.1234

注意事项:
  • 期待 -re {^core.*}不匹配。我们看到“超时”消息
  • 注意我们试图匹配的内容:
    expect: does "sh-4.3$ echo core.1234\r\ncore.1234\r\nsh-4.3$ " (spawn_id exp6) match regular expression "^core.*"? Gate "core*"? gate=yes re=no
    # ............^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    它以我发送的命令开头,因此使用“普通” anchor 将不起作用
  • 我期待的下一件事是 -re {(?n)^core.*} .此 比赛。
  • (?n)有点用Tcl regex告诉正则表达式引擎我们想要“换行敏感”匹配的指令。
  • 换行敏感匹配意味着 .将不匹配换行符和(这里更相关)^可以在多行字符串中的换行符之后立即匹配(类似 $)
  • 请注意,我的 puts 的输出命令看起来很奇怪。那是因为$expect_out(0,string)结尾的回车.请注意这一点,并使用 string trim根据需要

  • 这里的外卖类(class)是:
  • 提取命令的输出可能很困难,因为提示和发送的命令可能会妨碍。
  • 使用 expect 调试来查看为什么您的模式不匹配。
  • 关于regex - 期望中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252842/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com