zoukankan      html  css  js  c++  java
  • 正则表达式之扩展正则表达式

    扩展正则表达式

    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
    
    

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

    * * * 胖并快乐着的死肥宅 * * *
  • 相关阅读:
    IDEA创建Javaweb工程
    配置Info.plist (设置状态栏样式、自定义定位时系统弹出的提示语、配置3DTouch应用快捷菜单)
    关于IQKeyBoardManager挤出导航栏的解决方案
    iOS应用内跳转系统设置相关界面的方法
    解决xcode打开时loading假死的问题
    iOS图片按比例显示
    iOS开发-UITableView顶部图片下拉放大
    自定义按钮 图片+文字
    iOS开发-NSOperation与GCD区别
    iOS开发-UINavigationBar透明设置
  • 原文地址:https://www.cnblogs.com/bpzblog/p/14503166.html
Copyright © 2011-2022 走看看