前幾天看到Stylus插件上的樣式列表里多出來(lái)一個(gè)Jupyter Notebook的樣式,回想起自己之前給Jupyter寫(xiě)過(guò)一個(gè)CSS樣式,可是怎么就失效了呢?仔細(xì)一看,原來(lái)是因?yàn)镴upyter Notebook每次調(diào)用的localhost端口不一樣。當(dāng)時(shí)為了偷懶,直接用了Stylus的網(wǎng)址前綴判斷方式來(lái)判斷是否是Jupyter Notebook的頁(yè)面。這樣一來(lái),只能用正則表達(dá)式改寫(xiě)一下了。
其實(shí),這并不是我第一次想要研究一下正則表達(dá)式的寫(xiě)法。但是,可能因?yàn)楹退鼪](méi)有緣分吧,每次都是看一眼就頭腦發(fā)暈,不知道那些花里胡哨的符號(hào)代表什么。這次總算解決了(?)入門(mén)的問(wèn)題。
http:\/\/localhost:888(\d?)?([^ ]*)
上面就是一個(gè)正則表達(dá)式。其中沒(méi)有被( )
包圍的內(nèi)容,是需要完全相符的。而( )
中的內(nèi)容,則是需要進(jìn)行正則匹配的。
接下來(lái),看一眼Jupyter Notebook的網(wǎng)址長(zhǎng)什么樣:
http://localhost:8889/notebooks/Codes/Geo/Jupyter/01%20CitiBike.ipynb
為了匹配網(wǎng)址,可以將它拆解為四部分:
http://localhost:
、8889
、/notebooks/
、/Codes/Geo/Jupyter/01%20CitiBike.ipynb
第一個(gè)部分,是不會(huì)變化的開(kāi)頭;第二部分,是端口號(hào),也就是一直在變的東西;第三部分,應(yīng)該是Jupyter Notebook的一個(gè)提示符(?),畢竟用到localhost的不只有Jupyter一個(gè);第四部分,就是文件目錄了。
不會(huì)變化的部分,在正則表達(dá)式中,可以直接輸入。/
應(yīng)該需要轉(zhuǎn)義一下。
需要匹配的變化部分,就要用到哪些晃眼睛的符號(hào)了。
- 對(duì)于第二部分這里出現(xiàn)的是一位數(shù)字,而數(shù)字可以用
\d
來(lái)表示,后面的?
則代表前面的字符最多只能出現(xiàn)一次(0次或1次)。 - 對(duì)于第四部分,這里是一長(zhǎng)串文件路徑,用
[^]
來(lái)排除一些符號(hào),這個(gè)例子中,中括號(hào)里有空格,表示匹配不包括空格的任何字符序列。
基本上就這樣,可算是把網(wǎng)址匹配出來(lái)了,(不知道下一次研究正則表達(dá)式是什么時(shí)候。。