【发布时间】:2012-06-11 21:19:51
【问题描述】:
假设我得到了这个字符串:100:~# 或 100:~/tmp
这实际上意味着,我需要匹配机器的终端提示符(可能包含也可能不包含路径)。通常,使用这种正则表达式模式:
100:(~|/)(/+[a-zA-Z0-9]*)*#
它适用于输入字符串,例如:100:~/foo/bar/foo/baz#
你可以在这里测试它:Regex Pal
但是在 TCL 中使用 Expect,我必须添加 -re 来匹配这样的模式。但是,我不允许这样做。我在没有正则表达式的情况下尝试了上述模式,但失败了。
当前匹配100:~#或100:~/tmp的模式非常简单:100:[~/]*#,我被告知这是匹配字符串的shell表达式,而不是正则表达式。 100:[~/]*# 模式意味着它匹配 100:[~/](~ 和 / 是可选的)和 # 之间的任何内容。 * 字符旨在匹配任何内容,而不是常规的 *,后者在传统正则表达式中为零或多个。
Expect 中没有-re 标志的模式匹配表达式到底是什么?
【问题讨论】: