正則表達(dá)式實例學(xué)習(xí)
本文關(guān)鍵詞:學(xué)習(xí)正則表達(dá)式,由筆耕文化傳播整理發(fā)布。
學(xué)習(xí)正則表達(dá)式的最好方法是從例子開始,理解例子之后再自己對例子進(jìn)行修改,實驗。我覺得正則表達(dá)式很像大一時候?qū)W習(xí)的離散數(shù)學(xué)的,使用“與或非(&,|,^)”的邏輯表達(dá)式來抽象一段復(fù)雜的自然語言描述,從而解決一些邏輯分析問題。
1.語法:當(dāng)我們進(jìn)入大學(xué)的時候,每個同學(xué)都會有一個學(xué)號(例如我的學(xué)號是201235010126)。在我們的大學(xué),學(xué)號里面集中了年級,專業(yè)代碼,班級代碼,學(xué)生編號的種種信息,由此得到每一個同學(xué)唯一的ID號。今天這里采用專業(yè)年級的例子,由淺入深,講解一個復(fù)雜表達(dá)式的來源。下面結(jié)合自己情況,以所在大學(xué)湖南大學(xué)保密專業(yè)為例,寫一寫學(xué)習(xí)正則表達(dá)式心得。
學(xué)號編碼規(guī)則:
對201235010126來說: 條件1:1-4位(2012)表示年號 條件2:5-8位(3501)固定是專業(yè)號3501 條件3:倒數(shù)第三位表示班級號,每個年紀(jì)有6個班級 條件4:最后兩位表示班級內(nèi)學(xué)號,每個班有32人 條件5:12級開始倒數(shù)第四位補(bǔ)0
2.1實例一:匹配12級保密1班的學(xué)生。 正則表達(dá)式是: 分析1."^"匹配開頭,"$"匹配結(jié)尾,,"|"表示或
2.?:匹配pattern但不獲取匹配結(jié)果,也就是說這是一個非獲取匹配,不進(jìn)行存儲供以后使用。這在使用或字符“(|)”來組合一個模式的各個部分是很有用.
3.學(xué)生學(xué)號是01-32,所以拆分成3組:
a)01-09:0[1-9]
b)10-29:[1-2]/d
c)30-32:3[0-2]
?:是小括號的專利,因為小括號里面的是一組字符
2.3實例三:匹配11級保密6個班和12級保密6個班的所有學(xué)生()表示把一些代碼組合起來,[]表示把所有的字符組合起來
2.4實例四:匹配2001-2019級的所有學(xué)生(假設(shè)每個年級6個班,其中2011為分界線,2012級開始倒數(shù)第四位補(bǔ)0) 分析1.條件1-2規(guī)定了最后三位,也就是101-632,所以我們可以輕松想到1-6$這樣可以匹配后三位,在這里面01 - 32可以分成3段:
a)[1-9] b)10-29:[1-2]/d c)[0-2]
2.然后我們看前面四位,由于特殊的年份是以11-12年分界的,所以我們說從第3位到倒數(shù)第4位都是特殊的,開頭肯定是^20,然后里面根據(jù)情況可以分為補(bǔ)0的還是不補(bǔ)為的,所以可以得到(xxx3501|xxx35010),然后我們可以看到第一個XXX表示的是01-11,也即可以寫成(?:0[1-9]|1[01]),第二個表示的是12-19,也即可以直接寫成1[2-9],所以中間一部分是
([2-9]35010)
3.最后:我們就可以得出一個看起來非常高大上的正則表達(dá)式了
終于把這個看似高大上的一串正則表達(dá)式匹配出來了,其實只要仔細(xì)羅列好條件,正則表達(dá)式就是xx的oo次的無限組合。O(∩_∩)O~ ~
本文關(guān)鍵詞:學(xué)習(xí)正則表達(dá)式,由筆耕文化傳播整理發(fā)布。
本文編號:365455
本文鏈接:http://www.sikaile.net/wenshubaike/mishujinen/365455.html