美文网首页我爱编程
[abnormal] 正则表达式

[abnormal] 正则表达式

作者: 红薯铺子 | 来源:发表于2018-04-07 15:59 被阅读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一个;第四部分,就是文件目录了。

    不会变化的部分,在正则表达式中,可以直接输入。/应该需要转义一下。

    需要匹配的变化部分,就要用到哪些晃眼睛的符号了。

    1. 对于第二部分这里出现的是一位数字,而数字可以用\d来表示,后面的?则代表前面的字符最多只能出现一次(0次或1次)。
    2. 对于第四部分,这里是一长串文件路径,用[^]来排除一些符号,这个例子中,中括号里有空格,表示匹配不包括空格的任何字符序列。

    基本上就这样,可算是把网址匹配出来了,(不知道下一次研究正则表达式是什么时候。。

    相关文章

      网友评论

        本文标题:[abnormal] 正则表达式

        本文链接:https://www.haomeiwen.com/subject/tysyhftx.html