我读了一个tcl测试脚本,它使用了EXPECT。一些代码是:
expect ".*hello.*yes.*morning.*"
“*”外卡匹配所有内容,但是“。”在它面前?这是什么意思?什么样的模式想要匹配?
答案 0 :(得分:6)
请注意,expect
命令的默认匹配样式为-glob
,因此这些点实际上是字面点。可以在string match
文档中找到有关glob样式匹配的帮助。
如果您希望将您的模式视为regular expression,则必须说:
expect -re ".*hello.*yes.*morning.*"
答案 1 :(得分:3)
*在正则表达式中不是通配符。是,*之后。表示前一个字符/字符类的0或更多次出现。所以这里意味着:任何符号出现0次或更多次。另请注意,根据正则表达式选项,。通常不包括换行符。
答案 2 :(得分:1)
*
不是正则表达式中的通配符。您正在考虑使用文件名通配符进行shell操作,但不 *
如何在正则表达式中工作。完全不同的动物。在你的正则表达式中,.
匹配任何字符,然后*
表示'匹配0或更多前面的字符。
以下是有关正则表达式的一些信息: http://www.regular-expressions.info/tutorial.html
这里的页面直接解决了正则表达式和shell文件匹配模式之间的混淆正则表达式新手: