私は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
うまくいきません。
私は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
うまくいきません。
bash は明らかに tcsh ではなく正規表現をネイティブにサポートしています。代わりに 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