如果使用模式,则翻译为TCSH



i hava在bash中遵循代码:

if  [[ $a =~ ^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$ ]]; then

我该如何在TCSH中执行此操作?我尝试了:

if  ( $a =~ {^[+-]?{[0-9]+.?[0-9]*|[0-9]*.?[0-9]+}{[DdEeQ][+-]?[0-9]+}?$} ) then

它不起作用。

显然不是tcsh bash bash interaly支持正则表达式。可以使用expr命令;以下测试表明|()?和 必须逃脱以不是从字面上逃脱(例如,与Perl相反)。

测试:

expr a : '(a|b)'
expr b : 'a?b'
expr aab : 'a+b'

expr "$a" : '^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$'

pattern='^[+-]?([0-9]+.?[0-9]*|[0-9]*.?[0-9]+)([DdEeQ][+-]?[0-9]+)?$'
if expr "$a" : "$pattern" >/dev/null; then
    ..
fi

相关内容

  • 没有找到相关文章

最新更新