よく特定の文字列をざっくりとしたパターンでフィルタリングしたい時に正規表現を使うかと思いますが、よく似た動作をする matchコマンドと gmatchコマンドでは正規表現の使い方にちょっとした違いがあるようです。
matchは、「第1文字列引数の正規表現」と一致する第2文字列引数の一部を返すコマンドで、gmatchは第1文字列引数と「第2文字列引数の正規表現」が一致した場合に1を返すコマンドです。
正規表現を使う位置も違いますし、gmatchのほうは正規表現というよりもワイルドカードに近いような感じでコマンドヘルプにも globのようなパターン一致となっています。
表にすると
| match | gmatch | |
| . | 任意の文字 | ─ |
| * | 0個以上 | 文字列 |
| ? | ─ | 任意の文字 |
| + | 1個以上 | ─ |
| ^ | 行頭 | ─ |
| $ | 行末 | ─ |
| \ | エスケープ | エスケープ |
のように gmatchのほうは、意外と使える表現が少ない感じです。
0/1が返ってくる点とワイルドカードのような使い勝手という事で、使用頻度としては gmatchのほうが高いかなぁ。
0 件のコメント:
コメントを投稿