【问题标题】:Using expect in Perl, how to add options of ignoring case with method $object->expect()?在 Perl 中使用 expect,如何使用 $object->expect() 方法添加忽略大小写的选项?
【发布时间】:2020-10-04 20:30:25
【问题描述】:

这是在 perldoc 中找到的示例:

  $object->expect(15, '-re', "$str");

我想在比赛中添加选项“i”。这行不通:

$object->expect(15, '-re', qr/$str/i);

我必须使用这种格式吗:

 $exp->expect($timeout, [ qr/$str/i, sub {}], $shell_prompt);

【问题讨论】:

    标签: perl expect.pm


    【解决方案1】:

    您可以将指令嵌入到正则表达式本身:

    $object->expect(15, '-re', "(?i)$str");
    

    参考:http://perldoc.perl.org/perlre.html#Extended-Patterns

    【讨论】:

    • qr/foo/i 实际上是(?i:foo)(?i)foo 通常等效,但它依赖于 Expect 将模式嵌入 (?:...) 以限制不区分大小写的范围。
    • 它将依赖 $str 不包含不匹配的右括号。我想我们首先必须假设它是一个格式良好的正则表达式,或者依赖其余代码来捕获错误。
    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 2013-10-09
    • 2018-07-24
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多