文字クラス(Character Class)
Ruby等々では、正規表現で\dと書くと10進数の文字を拾ってくれます。
これらはShorthand Character Classesと呼ばれます。
この元ネタとなったらしいものが、今回紹介する文字列クラスです。
例
[:alnum:]
英数字 [a-z A-Z 0-9]
[:alpha:]
英字 [a-z A-Z]
[:blank:]
スペースまたはタブ
[:cntrl:]
制御文字
[:digit:]
数字 [0-9]
[:graph:]
表示可能な文字?
[:lower:]
小文字 [a-z]
[:print:]
非制御文字
[:punct:]
句読文字??
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~.
が該当するそうです。
[:space:]
空白文字
[:upper:]
大文字 [A-Z]
[:xdigit:]
十六進数字 [0-9 a-f A-F]
適用例
以前の記事では訳も分からず、部分的に文字列クラスを適用していましたが...
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
これを全部文字列クラスで置き換えると実際スマート!
local s='[[:space:]]*' w='[[:alnum:]_]*' fs=$(echo @|tr @ '\034')