📜  匹配的POSIX字符类(1)

📅  最后修改于: 2023-12-03 15:22:47.851000             🧑  作者: Mango

匹配的POSIX字符类

正则表达式中可以使用一些特殊的字符类来快捷地匹配一组字符。这些字符类称为POSIX字符类,可以使用"[:class:]"这样的语法来表示。

常见的POSIX字符类
[:digit:]

匹配一个数字字符,等同于[0-9]。

echo "hello 123" | grep -E '\<[[:digit:]]+\>'   #输出 123
[:alpha:]

匹配一个字母字符,等同于[a-zA-Z]。

echo "hello 123" | grep -E '[[:alpha:]]+'   #输出 hello
[:alnum:]

匹配一个字母或数字字符,等同于[a-zA-Z0-9]。

echo "hello 123" | grep -E '\<[[:alnum:]]+\>'   #输出 hello 和 123
[:blank:]

匹配一个空格或制表符,等同于[\t ]。

echo "hello     world" | grep -E 'hello[[:blank:]]+world'   #输出 hello     world
[:upper:]

匹配一个大写字母,等同于[A-Z]。

echo "Hello World" | grep -E 'H[[:upper:]]+o'   #输出 Hello
[:lower:]

匹配一个小写字母,等同于[a-z]。

echo "Hello World" | grep -E '[[:lower:]]+o'   #输出 o
[:space:]

匹配一个空白字符,包括空格、制表符、换行符等,等同于[\n\t\r\v\f]。

echo "hello     world" | grep -E 'hello[[:space:]]+world'   #输出 hello     world
自定义POSIX字符类

除了使用已有的POSIX字符类,还可以自定义POSIX字符类,以便更方便地重用。

[[:class:]]

创建一个自定义的POSIX字符类。其中"class"是自定义的字符类名称,可以是任意字符串。

echo "Hello World" | grep -E 'H[[:upper:][:digit:]]+o'   #输出 Hello

上面的例子中,使用了自定义的POSIX字符类"[:upperdigit:]",匹配一个大写字母或数字字符。

总结

使用POSIX字符类可以更方便地匹配一组字符,避免了一些重复而繁琐的工作。同时,也可以自定义POSIX字符类来满足特定的需求。