• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      正則表達(dá)式在網(wǎng)頁(yè)課表抓取中的應(yīng)用

      2017-10-21 12:11:43申圣兵
      科技風(fēng) 2017年12期
      關(guān)鍵詞:課表課程表字符串

      申圣兵

      現(xiàn)在流行的校園類App如超級(jí)課程表、課程格子等都是以學(xué)生熟悉的課程表作為應(yīng)用的切入點(diǎn),受到了他們的喜愛(ài)。有些應(yīng)用包含上千所學(xué)校的課表信息,這些學(xué)校的課表信息千差萬(wàn)別,正則表達(dá)式成了一個(gè)識(shí)別和解析它們的有力工具。

      課表的信息來(lái)源一般是正方、青果等教務(wù)管理系統(tǒng),它們一般都是以網(wǎng)頁(yè)形式顯示的,其中典型的網(wǎng)頁(yè)課表源碼格式如下:

      計(jì)算機(jī)網(wǎng)絡(luò)(A)

      周二第1,2節(jié){第315周|單周}

      馮海林(馮海林)

      教1609(多媒體)

      它們一般包括課程名、星期、節(jié)次、周數(shù)、教師、教室等信息,相關(guān)類別信息以HTML標(biāo)記

      分隔,很容易使用JSoup等工具解析出來(lái),比較復(fù)雜的地方主要是星期、節(jié)次等信息,它們往往是連在一起的,不容易分離,并且格式多樣,因此,使用正則表達(dá)式解析這一部分內(nèi)容成了課表解析的一個(gè)關(guān)鍵。

      1 課表節(jié)次的一般格式

      下面是一些常見(jiàn)的課表節(jié)次信息格式:

      (1)周二第1,2節(jié){第416周}二,1,2,4,16,null

      (2){第210周|3節(jié)/周}null,null,null,2,10,3節(jié)/周

      (3)周二第1,2節(jié){第416周|雙周}二,1,2,4,16,雙周

      (4)周二第1節(jié){第416周}二,1,null,4,16,null

      (5)周二第1節(jié){第416周|雙周}二,1,null,4,16,雙周

      這些包括了常見(jiàn)的課表節(jié)次格式,如果和以上的格式不符,那么就要自行修改正則表達(dá)式。

      2 正則表達(dá)式的使用方法

      現(xiàn)在以Java語(yǔ)言為例介紹正則表達(dá)式在高級(jí)語(yǔ)言中的使用方法。Java從JDK 1.40版本開(kāi)始包含了java.util.regex包,這個(gè)包中包括了兩個(gè)類:Pattern(模式類)和Matcher(匹配器類),一個(gè)Pattern對(duì)象就是一個(gè)正則表達(dá)式經(jīng)編譯后的表現(xiàn)模式,也就是前邊所說(shuō)的“模式編譯器”;一個(gè)Matcher對(duì)象是一個(gè)狀態(tài)機(jī)器,它根據(jù)Pattern對(duì)象作為匹配模式對(duì)字符串展開(kāi)匹配檢查,也就是“模式匹配器”。這里主要使用了Pattern類的compile方法及Matcher類的matches方法。它們的作用如下:

      (1)compile(String regex)方法:將指定的正則表達(dá)式進(jìn)行編譯。

      (2)matches()方法:判斷整個(gè)字符序列與模式是否匹配。如果連續(xù)用Matcher對(duì)象檢查多個(gè)字符串,可以使用reset方法重置匹配器,放棄其所有顯式狀態(tài)信息并將其添加位置設(shè)置為零。

      課表正則表達(dá)式中使用了組,組在正則表達(dá)式中是一個(gè)非常重要的概念。組是用括號(hào)來(lái)劃分正則表達(dá)式的,可以通過(guò)編號(hào)來(lái)引用組。組號(hào)從0開(kāi)始,有幾對(duì)小括號(hào)就表示有幾個(gè)組,并且組可以嵌套,組號(hào)為0的表示整個(gè)表達(dá)式,組號(hào)為1的表示第一個(gè)組,依此類推。例如:A((B)C)(D)E正則式中有四組:組0是ABCDE,組1是BC,組2是B;組3是C,組4是D。

      3 正則表達(dá)式在提取課表信息中的應(yīng)用

      下面我們以提取課程節(jié)次信息為例,看看正則表達(dá)式的靈活應(yīng)用。

      節(jié)次信息的正則表達(dá)式可寫成:String reg = “周(.)第(\\d{1,2}),(\\d{1,2})節(jié)\\{第(\\d{1,2})(\\d{1,2})周\\|((.*周))\\}”;

      String splitPattern = “

      ”;//設(shè)置課表分隔標(biāo)記

      String[] temp = sub.split(splitPattern);//將課表信息分離,存在字符串?dāng)?shù)組中,數(shù)組第二個(gè)為節(jié)次信息

      Pattern pattern = Pattern.compile(reg);

      Matcher matcher = pattern.matcher(temp[1]);

      matcher.matches();

      最終得到的課表格式如下圖如示:

      4 結(jié)語(yǔ)

      現(xiàn)在流行的開(kāi)發(fā)語(yǔ)言比如C#、VB、Java等等都提供了對(duì)正則表達(dá)式的直接支持,在很多領(lǐng)域得到了應(yīng)用,由于正則表達(dá)式相對(duì)比較抽象,不容易理解,要精通它比較困難,但熟悉一些常用操作,對(duì)我們的工作還是有很大的幫助的。

      參考文獻(xiàn):

      [1]胡軍偉.正則表達(dá)式在Web信息抽取中的應(yīng)用.北京信息科技大學(xué)學(xué)報(bào),2011.

      [2]張靜.正則表達(dá)式及其在信息抽取中的應(yīng)用.電腦知識(shí)與技術(shù),2009.

      [3]唐惠麗.正則表達(dá)式的研究及在Web中的應(yīng)用.計(jì)算機(jī)技術(shù)與發(fā)展,2013.

      猜你喜歡
      課表課程表字符串
      課程表
      學(xué)生出招解決”日課牌“問(wèn)題
      如果我是校長(zhǎng)
      超萌小鹿課程表
      童話世界(2019年17期)2019-07-04 15:15:36
      運(yùn)用VBA自動(dòng)生成子課程表
      青年課程表
      金色年華(2016年8期)2016-02-28 01:39:58
      各地區(qū)學(xué)生課表
      留學(xué)生(2015年6期)2015-07-02 02:36:20
      黑馬學(xué)院2015年下半年超級(jí)課程表
      一種新的基于對(duì)稱性的字符串相似性處理算法
      依據(jù)字符串匹配的中文分詞模型研究
      桃园县| 隆林| 昌乐县| 两当县| 湟源县| 平泉县| 垫江县| 玉山县| 白玉县| 五台县| 瓦房店市| 孙吴县| 闵行区| 海门市| 东源县| 藁城市| 孟村| 贵德县| 漳浦县| 侯马市| 白水县| 邢台市| 保亭| 璧山县| 汶川县| 阿拉善左旗| 清河县| 开鲁县| 和田市| 瑞昌市| 库伦旗| 延吉市| 台南市| 冕宁县| 黔西县| 惠水县| 武宣县| 清水河县| 高唐县| 武定县| 永善县|