正则表达式/Shell 正则表达式
外观
< 正则表达式
Unix shell 识别glob 语法,用于文件名替换。使用 ksh 和 bash 的extglob 扩展,其表达能力等同于基本形式的正则表达式。
运算符 | 效果 |
---|---|
? | 钩子运算符指定任何单个字符。 |
[ ] | 方括号允许将单个字符与字符列表或字符范围匹配。 |
[! ] | 补码方括号允许匹配不在字符列表或字符范围内的单个字符。GNU bash 支持的非标准等效项是插入符号语法 [^ ]。 |
* | 星号指定匹配零个或多个字符。 |
?(pattern-list) | 匹配给定模式的零个或一个出现次数。extglob 扩展。 |
*(pattern-list) | 匹配给定模式的零个或多个出现次数。extglob 扩展。 |
+(pattern-list) | 匹配给定模式的一个或多个出现次数。extglob 扩展。 |
@(pattern-list) | 匹配给定模式中确切的一个。extglob 扩展。 |
!(pattern-list) | 匹配除给定模式之外的任何内容。extglob 扩展。 |
与通用正则表达式的区别是
- 星号和钩子运算符的含义不同。
- 在 POSIX 标准中,补码方括号使用感叹号 (!) 形成,而不是插入符号 (^)。一些 shell(例如 GNU bash)允许使用插入符号作为扩展。
- extglob 扩展是非标准的。它们仅在 Korn shell(默认情况下启用)和 GNU bash(通过
shopt -s extglob
启用)中可用。
使用此正则表达式语法的工具和语言包括
- 对于一般的glob 语法,所有 POSIX “bourne-compatible” shell。
- 对于extglob 部分,Korn shell 和 bash。