正则表达式与扩展正则表达式区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式与扩展正则表达式区别相关的知识,希望对你有一定的参考价值。

最近在学习正则表达式时,遇到了一些问题,究其原因是正则表达式与扩展正则表达式的区别没有弄清楚
    正则表达式与扩展正则表达式类似,只是扩展正则表达式表达更加简单

    正则表达式需要打 \ 转义字符 来表示某些字符的意思,而扩展正则表达式则不需要:
                \{m}   正则表达式表示至少表示前面的字符m次   {m} egrep一样
                \?     正则表达式表示前面的字符0或1次       ?   egrep一样
                \+     正则表达式表示前面的字符至少一次      +  egrep一样
                \(\)   正则表达式表示分组                  ()  egrep一样
                \|           正则表达式表示或                                        |   egrep一样

其中一个问题就是IP地址不知道该如何来表示

        IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
        IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
        例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
        IP地址(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网络协议地址。
        常见的IP地址,分为IPv4与IPv6两大类。
        IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,
        其中A、B、C是基本类,D、E类作为多播和保留使用。
        IPV4就是有4段数字,每一段最大不超过255。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,
        地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。
        IPv6采用128位地址长度。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,
        还考虑了在IPv4中解决不好的其它问题。

扩展正则表达式表示:

        "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
        解释:用第一个括号里的数字表示           (个位数|十位数|以一开头的三位数|200-049|250-255)
                   用第二个括号表示                           ((数字).引用)
                   后面的打括号表示引用次数 为3      x(xx).x(xx).x(xx).
                   最后一个括号表示                           x(xx)
                   总的命令结果表示                           x(xx).x(xx).x(xx).x(xx)

                     注:四个xxx的范围已经限定

实例:

        ifconfig | "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
        inet 172.18.250.78  netmask 255.255.0.0  broadcast 172.18.255.255
        inet 192.168.6.131  netmask 255.255.255.0  broadcast 192.168.6.255
        inet 127.0.0.1  netmask 255.0.0.0
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

以上是关于正则表达式与扩展正则表达式区别的主要内容,如果未能解决你的问题,请参考以下文章

Linux grep、egrep使用命令详解

Linux正则表达式——扩展篇

Shell基本正则表达式和扩展正则表达式

Linux正则表达式

Linux之正则表达式

OSIX基本正则表达式和扩展正则表达式的比较