正則表達(dá)式之分組

2018-08-04 14:36 更新

在上述章節(jié)中我們已經(jīng)知道直接在字符后面加上限定符就可以重復(fù)單個(gè)字符,那么多個(gè)字符的重復(fù)又該如何實(shí)現(xiàn)呢?你可以使用小括號(hào)來指定子表達(dá)式(也稱為分組),然后對(duì)于這個(gè)子表達(dá)式的重復(fù)次數(shù)你就可以自行規(guī)定了,子表達(dá)式也可以進(jìn)行一些其他的操作,這個(gè)在后面會(huì)進(jìn)行介紹。

(\d{1,3}\.){3}\d{1,3}是一個(gè)簡單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式,請(qǐng)按下列順序分析它:\d{1,3}匹配1到3位的數(shù)字,(\d{1,3}\.){3}匹配三位數(shù)字加上一個(gè)英文句號(hào)(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(\d{1,3})。

不幸的是,它也將匹配256.300.888.999這種不可能存在的IP地址。如果能使用算術(shù)比較的話,或許能簡單地解決這個(gè)問題,但是正則表達(dá)式中并不提供關(guān)于數(shù)學(xué)的任何功能,所以只能使用冗長的分組,選擇,字符類來描述一個(gè)正確的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

理解這個(gè)表達(dá)式的關(guān)鍵是理解2[0-4]\d|25[0-5]|[01]?\d\d?,這里我就不細(xì)說了,你自己應(yīng)該能分析得出來它的意義。

注解:

  1. IP地址中每個(gè)數(shù)字都不能大于255. 經(jīng)常有人問我,01.02.03.04 這樣前面帶有0的數(shù)字, 是不是正確的IP地址呢? 答案是: 是的, IP 地址里的數(shù)字可以包含有前導(dǎo) 0 (leading zeroes).


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)