一、运行截图
警告: 这是少数平台相关的“bash”功能之一。 bash
将使用用户系统上安装的任何正则表达式引擎。 如果要兼容,请坚持使用符合POSIX规范的正则表达式引擎。 绝大部分发行版Linux中的bash均实现了POSIX规范。
警告: 此示例仅打印第一个匹配组。 使用时多个匹配组需要进行一些修改。
二、示例函数:
regex() {
# Usage: regex "string" "regex"
[[ $1 =~ $2 ]] && printf '%s\n' "${BASH_REMATCH[1]}"
}
三、用法示例:
$ # 删除开头的空白字符.
$ regex ' hello' '^\s*(.*)'
hello
$ # 验证十六进制颜色.
$ regex "#FFFFFF" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$'
#FFFFFF
$ # 验证十六进制颜色(无效).
$ regex "red" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$'
# no output (invalid)
四、bash脚本示例
#!/bin/bash
is_hex_color() {
if [[ $1 =~ ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$ ]]; then
printf '%s\n' "${BASH_REMATCH[1]}"
else
printf '%s\n' "error: $1 is an invalid color."
return 1
fi
}
read -r color
is_hex_color "$color" || color="#FFFFFF"
# Do stuff.