【发布时间】:2011-11-01 19:59:17
【问题描述】:
我正在尝试从格式为 4.6 或 2.8 的字符串中匹配版本号。我有以下内容,我最终将在我的 .bashrc 文件中的一个函数中使用它来查找操作系统版本:
function test () {
string="abc ABC12 123 3.4 def";
echo `expr match "$string" '[0-9][.][0-9]'`
}
但是,这与字符串中的 3.4 不匹配。谁能在这里指出我正确的方向?
谢谢。
【问题讨论】:
-
无法理解为什么它不起作用 - 也许,尝试使用“。”因为它被转义而不是在括号中,例如。
[0-9]\.[0-9] -
[.]不是单个字符吗?您的功能是否完全匹配?我不知道 bash 中正则表达式的细节,但我认为匹配会类似于“2 1”。 -
@oliver:如果在括号内,则不按原样使用
-
你确定你明白应该发生什么吗?在我看来,
expr match STRING REGEX如果匹配则返回 0,否则返回非零。这就是您的示例在我的机器上发生的情况。 -
我使用 expr match "$string" '.*([0-9][.][0-9]*)' 让它工作,这样它成功打印了 xx 号。跨度>