十分钟上手正则表达式 下篇

2022-04-14 22:15:51
目录
一、正则表达式常用符号1.1 问号【?】1.2 加号【+】1.3 花括号{}1.4 管道符号【|】1.5 小括号()二、正则表达式实战DWXZdJ示例示例1:示例2:

,只允许字母数字字符以及以下特殊字符:(点号、下划线)
服务器名和域名都用点分隔,先指定服务器名,紧接着指定子域名,最后是后面不带点号的
顶级域名。
顶级域名的数量在过去十分有限,正则表达式模式编写者会尝试将它们都加到验证模式中。
然而遗憾的是,随着互联网的发展,可用的顶级域名也增多了。这种方法已经不再可行。
从左侧开始构建这个正则表达式模式。

过滤用户名中表达式模式。

^([a-zA-Z0-9_-.+]+)@

这个分组指定了用户名中允许的字符,加号表明必须有至少一个字符。下一个字符很明显是@。

hostname模式使用同样的方法来匹配服务器名和子域名:

([a-zA-Z0-9_-.]+)

顶级域名用的正则表达式模式:

.([a-zA-Z]{2,5})$

整体组合模式:

^([a-zA-Z0-9_-.+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$

封装到脚本中:

cat isemail.sh

#!/bin/bash # script to filter out bad phone numbers awk --re-interval '/^([a-zA-Z0-9_-.+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})/{print $0}'

注意:在awk程序中使用正则表达式间隔时,必须使用--re-interval命令行选项。

示例测试脚本:

十分钟上手正则表达式 下篇

示例解读:

符合规则的邮件名会打印在屏幕,不符合的会被过滤掉,不会有内容输出。