正則表達式與擴展正則表達式區別
阿新 • • 發佈:2018-01-23
grep 裏的 正則表達 則表達式 命令結果 col 地址空間 1.0 onf 最近在學習正則表達式時,遇到了一些問題,究其原因是正則表達式與擴展正則表達式的區別沒有弄清楚
正則表達式與擴展正則表達式類似,只是擴展正則表達式表達更加簡單 正則表達式需要打 \ 轉義字符 來表示某些字符的意思,而擴展正則表達式則不需要: \{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
正則表達式與擴展正則表達式區別