アプリ版:「スタンプのみでお礼する」機能のリリースについて

なのですがどうすればいいでしょうか?

端末で

x=a.out;if [[ $x =~ \.\w+$ ]];then echo ok;else echo ng;fi
ng

となり\wが使えません
一方

x=a.out;if [[ $x =~ \.[0-9a-z]+$ ]];then echo ok;else echo ng;fi
ok

です

\wの代わりに[0-9a-z]+は長すぎるので何とかしたいのです

何かいい方法はないでしょうか?

よろしくお願いします

A 回答 (1件)

正規表現と一言で言っても、どんな表現使えるかは、その実装毎に違います。




bashのマニュアルには
An additional binary operator, =~, is available, with the same precedence as == and !=. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex(3)).
とあります。
「extended regular expression」「regex(3)」とあるように、POSIXの拡張正規表現(ERE)になります。

http://www.kt.rim.or.jp/~kbk/regex/regex.html#PO …
によると、EREに\wというものはありません。

どうしても\wを使いたいなら、\wが使える処理系を使う、という方法はありますが、かえって手間になると思います

この回答への補足

回答ありがとうございます
諦めるよりしかたがないのですね
2文字が8文字になるだけなので我慢するべきかもしれません

補足日時:2013/01/13 10:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!