为什么以下正则表达式在cli上运行而不是从bash-script运行?

时间:2016-09-06 08:39:34

标签: regex bash

以下命令适用于cli本身:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_REDELIVER_INTENT;
}

但不是在bash脚本中。

我的想法是,我希望为程序提供名称为someCall prefix.+([[:digit:]]).postfix prefix.1.postfix的文件。

我需要在脚本中更改哪些内容?

编辑: 忘了提它抛出的错误:

prefix.112.postfix

编辑2: 如果我使用syntax error near unexpected token `(' 来源bash脚本,那么它可以工作: - \

2 个答案:

答案 0 :(得分:1)

+放在([[:digit:]])之后并转义.

^prefix\.([[:digit:]])+\.postfix$

此外,如果您不需要捕获的数字组,请执行以下操作:

^prefix\.[[:digit:]]+\.postfix$

答案 1 :(得分:1)

您似乎混淆了shell globbing和正则表达式匹配。这些是不同的东西,并使用不同的元字符。

(标准POSIX)用于表达"其中一个或多个",正如正则表达式+量词所做的那样。

但是,你可以试试这是否有足够的选择性:

$ touch prefix.1.postfix
$ echo prefix.[[:digit:]]*.postfix
prefix.1.postfix