[abnormal] 正则表达式
2018-04-07 本文已影响0人
红薯铺子
前几天看到Stylus插件上的样式列表里多出来一个Jupyter Notebook的样式,回想起自己之前给Jupyter写过一个CSS样式,可是怎么就失效了呢?仔细一看,原来是因为Jupyter Notebook每次调用的localhost端口不一样。当时为了偷懒,直接用了Stylus的网址前缀判断方式来判断是否是Jupyter Notebook的页面。这样一来,只能用正则表达式改写一下了。
其实,这并不是我第一次想要研究一下正则表达式的写法。但是,可能因为和它没有缘分吧,每次都是看一眼就头脑发晕,不知道那些花里胡哨的符号代表什么。这次总算解决了(?)入门的问题。
http:\/\/localhost:888(\d?)?([^ ]*)
上面就是一个正则表达式。其中没有被( )
包围的内容,是需要完全相符的。而( )
中的内容,则是需要进行正则匹配的。
接下来,看一眼Jupyter Notebook的网址长什么样:
http://localhost:8889/notebooks/Codes/Geo/Jupyter/01%20CitiBike.ipynb
为了匹配网址,可以将它拆解为四部分:
http://localhost:
、8889
、/notebooks/
、/Codes/Geo/Jupyter/01%20CitiBike.ipynb
第一个部分,是不会变化的开头;第二部分,是端口号,也就是一直在变的东西;第三部分,应该是Jupyter Notebook的一个提示符(?),毕竟用到localhost的不只有Jupyter一个;第四部分,就是文件目录了。
不会变化的部分,在正则表达式中,可以直接输入。/
应该需要转义一下。
需要匹配的变化部分,就要用到哪些晃眼睛的符号了。
- 对于第二部分这里出现的是一位数字,而数字可以用
\d
来表示,后面的?
则代表前面的字符最多只能出现一次(0次或1次)。 - 对于第四部分,这里是一长串文件路径,用
[^]
来排除一些符号,这个例子中,中括号里有空格,表示匹配不包括空格的任何字符序列。
基本上就这样,可算是把网址匹配出来了,(不知道下一次研究正则表达式是什么时候。。