Bash环境下满足特定规则的正则表达式编写需求
Bash正则表达式匹配解决方案
需求说明
需要编写适用于Bash的正则表达式$PATTERN,满足以下条件:
- 字符串必须以
aa、bb或cc开头 - 前缀后必须紧跟
.或@符号 - 上述符号后必须至少包含一个**非
.且非@**的字符(等价于:至少包含[a-zA-Z0-9_]或其他除.和@外的任意字符)
匹配示例验证
| 字符串 | 匹配结果 |
|---|---|
| aa.xya | true |
| aa. | false |
| aa | false |
| bb.@b | false |
| bb@b | true |
| bb.b | true |
| cc.bb. | false |
| cc.bb@ | false |
| cc.xz | true |
最终正则表达式
适用于Bash的正则表达式如下:
PATTERN='^(aa|bb|cc)[.@][^.@]+$'
表达式细节解释
^(aa|bb|cc):强制字符串以指定前缀开头[.@]:匹配前缀后的.或@符号[^.@]+:匹配至少1个(+表示1次及以上)非.且非@的字符$:匹配字符串结尾,确保符号后的内容不能是空值,也不能是.或@
Bash中使用方式
将正则表达式用于条件判断的示例:
string="aa.xya" PATTERN='^(aa|bb|cc)[.@][^.@]+$' if [[ "$string" =~ $PATTERN ]]; then echo "匹配成功" else echo "匹配失败" fi
内容的提问来源于stack exchange,提问作者Ichigo Kurosaki
相关产品推荐
相关产品推荐

