• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
白_胖_子
Linux学习的生活就是这么朴实无华且枯燥
博客园    首页    新随笔    联系   管理    订阅  订阅

正则表达式之扩展正则表达式

扩展正则表达式

Extended Regular Expression

主要内容就是对基本正则表达式的扩展。

  • 用正则表达式和扩展正则表达式分别取ip地址
## 使用基础正则表达式需要在{}前加\

[10:09:47 root@C8-3-55 ~]#ifconfig ens33 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | head -n1 
10.0.0.55
## 使用-E启用扩展正则表达式,{}前不需要加\
[10:09:59 root@C8-3-55 ~]#ifconfig ens33 | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -n1   
10.0.0.55
## 利用扩展正则表达式,同时使用()进行分组
[10:11:34 root@C8-3-55 ~]#ifconfig ens33 | grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -n1
10.0.0.55

但这样是由问题的,ip地址是有取值范围的

  • 利用扩展正则表达式分别表示0-9,10-99,100-199,200-249、250-255

[0-9],[1-9][0-9],1[0-9]{2},2[0-4][0-9],25[0-5]

  • 取符合规则的ip地址
1. 正则表达式对只能取数字[0-9],所以不能直接表达0-255或者1-255

2. 我们直接表示0-255不容易表示出来,我们就分段进行表示

3. [0-9]|[1-9][0-9] 两个[0-9]可以合并,合并后就是[1-9]?[0-9]

4. [1-9]?[0-9] 表示个位是0-9十位是1-9的两位数或者1-9的个位数

5. [1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5] 合起来就表示 1-255其中某一个数

6. IP地址的格式是xxx.xxx.xxx.xxx,其中首位不为0,且每位取值范围[1-255].[0-255].[0-255].[0-255]

7. [1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5](\.[1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]){3}

于是乎,我们最终就能用正则表达式取出合规的IP地址了!


[10:45:34 root@C8-3-55 ~]#ifconfig | grep -E -o '([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.[1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]){3}'
10.0.0.55
255.0.0.0
127.0.0.1
255.0.0.0

我居然能看懂这一串非人类语言了,我都开始佩服我自己了。搞明白正则以后,整个人都疯了。

* * * 胖并快乐着的死肥宅 * * *
posted @ 2021-03-08 23:48  白_胖_子  阅读(580)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3