日期:2014-05-16  浏览次数:20690 次

问一个expr模式匹配问题
$VALUE=accounts.doc
$expr   $value   :   '\(.*\).doc '
输出是
accounts
如何理解阿?

另外书上有这么一个例子
$VALUE=accounts.doc
$expr   $VALUE   :   October   8,   '.* '
12
什么意思   我在机器上试报错   知道应该是怎么写么?

------解决方案--------------------
expr 的 : 是一个匹配的意思,表示,后面匹配上前面的. 参考:man expr
expr的返回值是后面的表达式匹配到前面的个数
但是,\(\)是group用法,返回的是匹配到的字符串值

------解决方案--------------------
顶楼上,补充一点点,楼主示例中的.*从正则表达式来看 . 表示除换行符外的任意字符,*表示任意的数目,在使用\(和\)情况下,expr会返回匹配内容(在楼主的部分accounts.doc和expr表达式匹配的内容就是 accounts)。

第2个例子中,估计写法应是: expr $VALUE : "October 8, '.* ' "

另,楼主用的$expr是否是expr的笔误?