📅  最后修改于: 2023-12-03 15:22:47.851000             🧑  作者: Mango
正则表达式中可以使用一些特殊的字符类来快捷地匹配一组字符。这些字符类称为POSIX字符类,可以使用"[:class:]"这样的语法来表示。
匹配一个数字字符,等同于[0-9]。
echo "hello 123" | grep -E '\<[[:digit:]]+\>' #输出 123
匹配一个字母字符,等同于[a-zA-Z]。
echo "hello 123" | grep -E '[[:alpha:]]+' #输出 hello
匹配一个字母或数字字符,等同于[a-zA-Z0-9]。
echo "hello 123" | grep -E '\<[[:alnum:]]+\>' #输出 hello 和 123
匹配一个空格或制表符,等同于[\t ]。
echo "hello world" | grep -E 'hello[[:blank:]]+world' #输出 hello world
匹配一个大写字母,等同于[A-Z]。
echo "Hello World" | grep -E 'H[[:upper:]]+o' #输出 Hello
匹配一个小写字母,等同于[a-z]。
echo "Hello World" | grep -E '[[:lower:]]+o' #输出 o
匹配一个空白字符,包括空格、制表符、换行符等,等同于[\n\t\r\v\f]。
echo "hello world" | grep -E 'hello[[:space:]]+world' #输出 hello world
除了使用已有的POSIX字符类,还可以自定义POSIX字符类,以便更方便地重用。
创建一个自定义的POSIX字符类。其中"class"是自定义的字符类名称,可以是任意字符串。
echo "Hello World" | grep -E 'H[[:upper:][:digit:]]+o' #输出 Hello
上面的例子中,使用了自定义的POSIX字符类"[:upperdigit:]",匹配一个大写字母或数字字符。
使用POSIX字符类可以更方便地匹配一组字符,避免了一些重复而繁琐的工作。同时,也可以自定义POSIX字符类来满足特定的需求。