它是一种正则表达式的字符匹配语法; 来自Bash参考手册,§3.5.8.1(模式匹配):
[...]匹配任何一个包含的字符.用连字符分隔的一对字符表示范围表达式; 使用当前区域设置的整理顺序和字符集在这两个字符之间进行排序的任何字符都是匹配的.如果后面的第一个字符‘[’是a‘!’或a,‘^’那么任何未包含的字符都匹配.‘?’可以通过将其包括为集合中的第一个或最后一个字符来匹配A.‘]’可以通过将其包括为集合中的第一个字符来匹配A. 范围表达式中字符的排序顺序由当前语言环境和LC_COLLATEshell变量的值(如果已设置)确定.例如,在默认的C语言环境中,
‘[a-dx-z]’相当于'[abcdxyz]'.许多语言环境按字典顺序对字符进行排序,并且在这些语言环境‘[a-dx-z]’中通常不等同于‘[abcdxyz]’;‘[aBbCcDdxXyYz]’例如,它可能等同于.要获得括号表达式中范围的传统解释,可以通过将LC_COLLATE或LC_ALL环境变量设置为值来强制使用C语言环境‘C’.在
‘[’和中‘]’,可以使用语法指定字符类[:class:],其中class是posix标准中定义的以下类之一:
alnum alpha ascii blank cntrl digit graph lower
print punct space upper word xdigit
Run Code Online (Sandbox Code Playgroud)
字符类匹配属于该类的任何字符.单词字符类匹配字母,数字和字符
‘_’.在
‘[’和中‘]’,可以使用语法指定等价类[=c=],该语法将具有相同排序权重(由当前区域设置定义)的所有字符与字符c匹配.在
‘[’和中‘]’,语法[.symbol.]匹配整理符号符号.
(重点添加到最常见的使用模式)