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