4

一種の複雑な文字列があり、フォームは

"xxxp+NUMyyy"

ここで、xxx、NUM、および yyy はすべて可変長であり、「+」は「-」、「*」、「/」、または「=」などの算術演算子にすることができます。

ユーザーが入力した数学演算子と数値を取得する最良の方法を見つけようとしています。

私はこのようなものを組み合わせて使用​​してみました:

    echo `expr match "tcp+111" '\([+-=*/]\)'`
    echo `expr match "tcp+111" '\(\+\-=\*/\)'`

これまでのところ何も機能していません。そのようなことを行う最も簡単な方法は正規表現を使用することだと思いますが、間違っているのでしょうか? これを行う良い方法は何ですか?

ありがとうございました。

入力例: "tcjp-100" "p+1" "p+1:debug" "cp=11:v". 言及するのを忘れていましたが、演算子の前には常に文字 'p' があります。さらに、'xxx' と 'yyy' は存在する必要はありませんが、存在する可能性があります。

4

1 に答える 1

5

Bash の正規表現マッチング機能を使用できます。

string="xxxp+3456yyy"
pattern="[^*/+-]*([*/+-]*)([[:digit:]]+).*"    # the hyphen must come last (or first, but after ^) in the character sets

[[ $string =~ $pattern ]]
echo "${BASH_REMATCH[1]}"    # operator
echo "${BASH_REMATCH[2]}"    # number
于 2012-07-05T23:01:44.570 に答える