假设我预计这个字符串:100:~#
或100:~/tmp
Expect(TCL)中的模式匹配如何工作(不带-re标志)?
这实际上意味着,我需要匹配的终端提示输入机器(这可能会或可能不会包含路径)。通常情况下,这个正则表达式:
100:(~|/)(/+[a-zA-Z0-9]*)*#
它适用于输入字符串,如:100:~/foo/bar/foo/baz#
你可以在这里进行测试:Regex Pal
但TCL使用expect,我要补充-re
以匹配这种模式。但是,我不能这样做。我尝试了上述模式,没有正则表达式,并且失败了。
当前匹配100:~#
或100:~/tmp
的模式非常简单:100:[~/]*#
,我被告知它是匹配字符串的shell表达式,而不是正则表达式。 100:[~/]*#
模式表示它匹配100:[~/]
(~
和/
是可选的)和#
之间的任何内容。 *
字符是为了匹配任何东西,而不是常规的*
,它在传统的正则表达式意义上为零或更多。
究竟是什么样的模式匹配表达式在预计与-re
标志?
在glob模式中'*'和REs中的'。*'完全一样,'?'和RE中的'.'相似。字符集是相似的(虽然RE有它们的扩展版本),反斜杠比RE更简单。 –