999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java中的正則表達(dá)式應(yīng)用探討

2019-01-06 02:19:13羅恒洋張林
電腦知識(shí)與技術(shù) 2019年32期
關(guān)鍵詞:模式文本

羅恒洋 張林

摘要:隨著信息技術(shù)的高速發(fā)展,計(jì)算機(jī)面臨著大量的數(shù)據(jù)處理業(yè)務(wù)。文本字符串處理是一種經(jīng)常性的業(yè)務(wù),正則表達(dá)式在復(fù)雜字符串處理方面有著得天獨(dú)厚的優(yōu)勢(shì)。文章介紹了Java語言中的正則表達(dá)式處理方法,分析了復(fù)雜字符串的分割、查找、替換和提取特殊子串的方法,總結(jié)了構(gòu)建正則表達(dá)式重要性。

關(guān)鍵詞:文本;字符串;正則表達(dá)式;模式;Java

中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)32-0095-04

1背景

處理文本和數(shù)據(jù)是計(jì)算機(jī)經(jīng)常要做的事情,諸如存儲(chǔ)在數(shù)據(jù)庫的數(shù)據(jù)、文本編輯處理、網(wǎng)上注冊(cè)、填報(bào)登記的信息、網(wǎng)站新聞列表等應(yīng)用上都涉及大量處理文本和數(shù)據(jù)的操作。有時(shí)可能不知道需要處理的大量文本數(shù)據(jù)的具體內(nèi)容,但是若把這些文本和數(shù)據(jù)以一種能讓計(jì)算機(jī)識(shí)別和處理的模式表現(xiàn)出來,再讓計(jì)算機(jī)分析和處理文本和數(shù)據(jù)就變得方便了,這就是正則表達(dá)式技術(shù)的運(yùn)用,正則表達(dá)式的運(yùn)用給計(jì)算機(jī)處理大量文本數(shù)據(jù)帶來快速和簡便的操作。

2正則表達(dá)式元字符

正則表達(dá)式(Regular Expressionl是由一些字符和特殊字符組成的字符串,這個(gè)字符串描述了字符和字符的重復(fù)排列方式,反映了字符重復(fù)排列的規(guī)律性,因此能夠按某種模式匹配一些有相似特征的字符串或字符串集合。運(yùn)用正則表達(dá)式首先要理解正則表達(dá)式的元字符集提供的字符和特殊字符的含義。

2.1正則表達(dá)式支持的字符

正則表達(dá)式支持的合法字符如表1所示。

表1所列的是可以在正則表達(dá)式中使用的常規(guī)字符,利用常規(guī)字符也可以定義正則表達(dá)式,如”abc\nabc”匹配”abc\nabc”,字符串自身匹配自身。Java語言中,java.util.regex包下有兩個(gè)重要的類:Pattern和Matcher,這兩個(gè)類提供了定義正則表達(dá)式和匹配目標(biāo)字符串的主要操作。實(shí)際工作中,要用到Pattern中的matches方法,判斷某個(gè)正則表達(dá)式與目標(biāo)字符串是否匹配。matches方法是Pattern類的一個(gè)類方法,方法的返回值是boolean型數(shù)據(jù),該方法需要兩個(gè)參數(shù),第一個(gè)參數(shù)是定義的正則表達(dá)式,即某種形式的模式,第二個(gè)參數(shù)是要匹配的目標(biāo)字符串,當(dāng)某個(gè)正則表達(dá)式與目標(biāo)字符串匹配成功,方法返回true值,否則返回false,通常用matches方法測(cè)試定義的正則表達(dá)式能否匹配目標(biāo)字符串。

要構(gòu)造靈活的正則表達(dá)式就要用到正則表達(dá)式的特殊字符、預(yù)定義字符、邊界匹配符和方括號(hào)、圓括號(hào)表達(dá)式。

2.2正則表達(dá)式的特殊字符

正則表達(dá)式的特殊字符如表2所示。

2.5圓括號(hào)表達(dá)式

當(dāng)把多個(gè)字符當(dāng)作一個(gè)獨(dú)立單元進(jìn)行處理時(shí),就要用到圓括號(hào)表達(dá)式了,即用圓括號(hào)把多個(gè)字符分成一個(gè)子組,結(jié)合管道運(yùn)算符可以可以構(gòu)造關(guān)鍵詞匹配正則表達(dá)式。

“((public)I(protected)I(private))”用于匹配Java的三個(gè)訪問控制符之一。

在正則表達(dá)式中用一對(duì)圓括號(hào)可以把正則表達(dá)式分組,每一個(gè)子組能夠保留下來做進(jìn)一步的處理。假定要匹配的目標(biāo)字符串中既含有英文字符又含有數(shù)字字符,可以使用正則表達(dá)式”(\\w+)-(\\d+)”來匹配,在Java中把目標(biāo)字符串分成兩個(gè)子組,并且兩個(gè)子組匹配結(jié)果在Matcher類中以子組的形式保留下來,非常方便地進(jìn)行下一步處理。而傳統(tǒng)的做法需要編寫兩段程序代碼,先從目標(biāo)字符串中分離處英文字符并保存下來,再從目標(biāo)字符串中分離出數(shù)字字符,做進(jìn)一步處理,處理過程比使用圓括號(hào)運(yùn)算符復(fù)雜得多。

2.6數(shù)量標(biāo)識(shí)符支持的模式

特殊符號(hào)*、?、+用于匹配字符串模式出現(xiàn)一次、多次或未出現(xiàn)的情況,又稱作閉包運(yùn)算符或量詞。*(星號(hào))運(yùn)算符匹配它左邊那個(gè)正則表達(dá)式出現(xiàn)0次或0次以上的情況。+(加號(hào))運(yùn)算符匹配它左邊那個(gè)正則表達(dá)式出現(xiàn)1次或多次的情況。?f問號(hào))運(yùn)算符匹配它左邊那個(gè)正則表達(dá)式出現(xiàn)0次或1次的情況。

花括號(hào){}運(yùn)算符也是用來匹配其左邊正則表達(dá)式出現(xiàn)的情況,花括號(hào)內(nèi)可以是一個(gè)值、一個(gè)值跟一個(gè)逗號(hào)或由逗號(hào)分隔的兩個(gè)值。fml表示匹配其左邊那個(gè)正則表達(dá)式m次出現(xiàn),{m,}表示匹配其左邊那個(gè)正則表達(dá)式至少出現(xiàn)m次;{m,n}表示匹配其左邊那個(gè)正則表達(dá)式至少出現(xiàn)m次,最多出現(xiàn)n次。

構(gòu)建正則表達(dá)式時(shí)使用了表示重復(fù)的元字符(*、+、?、{m,n})說明了正則表達(dá)式引擎在執(zhí)行模式匹配時(shí)的工作模式。Java語言中支持三種工作模式,第一貪婪模式(Greedv),重復(fù)元字符默認(rèn)工作模式,貪婪模式的表達(dá)式會(huì)一直匹配下去,直到無法匹配為止。第二非貪婪模式(Reluctant)又稱勉強(qiáng)模式,用問號(hào)后綴(?)表示,它只匹配最少的字符,也稱為最小匹配模式。第三占有模式(Possessive),用加號(hào)后綴(+)表示,目前只有Java語言支持該模式,通常比較少用。

上面第一行使用貪婪模式匹配第一個(gè)出現(xiàn)的單詞,輸出結(jié)果x替換掉Hello,第二行使用非貪婪模式匹配,即匹配最少的字符,Hello,Java前的第0個(gè)字符替換成x。

3正則表達(dá)式的應(yīng)用

正則表達(dá)式是一個(gè)強(qiáng)大的字符串處理工具,互聯(lián)網(wǎng)上的網(wǎng)頁文件其實(shí)質(zhì)是一個(gè)龐大的字符串文件,利用正則表達(dá)式可以對(duì)字符串進(jìn)行查找、提取、分割和替換等操作。

3.1Pattern和Marcher類

Pattern類和Matcher類位于iava.util.regex包內(nèi),兩者都是終極類,一旦在程序中定義了正則表達(dá)式,就可以用這兩個(gè)類的對(duì)象來使用正則表達(dá)式。Pattern對(duì)象用來保存編譯后的正則表達(dá)式,編譯后的正則表達(dá)式可以在程序中反復(fù)使用,提高程序執(zhí)行的效率,利用Pattern對(duì)象創(chuàng)建Matcher對(duì)象,執(zhí)行模式匹配所涉及的狀態(tài)保留在Matcher對(duì)象中,多個(gè)Matcher對(duì)象可以共享同一個(gè)Pattern對(duì)象。典型的調(diào)用順序如下:

從字符串中提取特定子字符串,操作方法基本相同,只是所定義的正則表達(dá)式內(nèi)容不同。

4結(jié)束語

正則表達(dá)式在大量文本字符處理上有著得天獨(dú)厚的技術(shù)優(yōu)勢(shì),傳統(tǒng)的文本處理技術(shù)算法不僅復(fù)雜而且代碼臃腫,執(zhí)行效率也低。信息技術(shù)的高速發(fā)展促進(jìn)處理大量文本數(shù)據(jù)的正則表達(dá)式技術(shù)的發(fā)展,很多計(jì)算機(jī)高級(jí)語言演化也是從不支持正則表達(dá)式技術(shù)轉(zhuǎn)化為支持正則表達(dá)式技術(shù),并且不斷優(yōu)化正則表達(dá)式技術(shù),Java語言就是這樣的一種語言,Java語言從1.4版以來就支持正則表達(dá)式技術(shù),在目前見到的Java語言的各個(gè)版本中,都有著優(yōu)化和改進(jìn)正則表達(dá)式功能的說明。正則表達(dá)式的關(guān)鍵是構(gòu)建一個(gè)正則表達(dá)式模式,該模式能反映出文本字符串的排列特征,從而用該模式代表符合特征的大量具體的文本字符串,為進(jìn)一步的處理提供便捷。

猜你喜歡
模式文本
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
在808DA上文本顯示的改善
基于doc2vec和TF-IDF的相似文本識(shí)別
電子制作(2018年18期)2018-11-14 01:48:06
淺議信息化管理對(duì)會(huì)計(jì)的影響
珠三角西岸精密制造產(chǎn)業(yè)新城規(guī)劃及公共服務(wù)平臺(tái)構(gòu)建
高端飯店業(yè)產(chǎn)學(xué)研模式研究
永續(xù)債券探析
思想政治理論課實(shí)踐教學(xué)研究述評(píng)
中學(xué)數(shù)學(xué)創(chuàng)造性教學(xué)的模式與策略研究
成才之路(2016年26期)2016-10-08 11:17:17
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
主站蜘蛛池模板: 欧美亚洲欧美| 中字无码av在线电影| 91久久国产综合精品女同我| 内射人妻无套中出无码| 中文字幕自拍偷拍| 天堂岛国av无码免费无禁网站| 99久久人妻精品免费二区| 亚洲av无码专区久久蜜芽| 日韩欧美视频第一区在线观看| 97亚洲色综久久精品| 福利姬国产精品一区在线| 亚洲日本精品一区二区| 精品国产成人高清在线| 国产91高清视频| 亚洲水蜜桃久久综合网站| 欧美一级黄色影院| 亚洲精品国产首次亮相| 伊人国产无码高清视频| 成人另类稀缺在线观看| 欧美精品亚洲精品日韩专| 日韩色图在线观看| 精品伊人久久久香线蕉| 免费一极毛片| 亚洲精选无码久久久| 91久久偷偷做嫩草影院免费看| 国产亚洲一区二区三区在线| 国产丰满成熟女性性满足视频| 亚洲精品第一页不卡| 午夜日b视频| 欧美日韩第三页| 国产女同自拍视频| 国产三级视频网站| 欧美影院久久| 亚洲人成网站色7799在线播放| 亚洲伊人天堂| 日韩a在线观看免费观看| 国产成人1024精品| 国产麻豆va精品视频| 国产又爽又黄无遮挡免费观看 | 2024av在线无码中文最新| 亚洲AV人人澡人人双人| 久久永久精品免费视频| 亚洲精品欧美日韩在线| 日本免费a视频| 亚洲二区视频| 久久精品国产免费观看频道| 热久久综合这里只有精品电影| 国产成人无码Av在线播放无广告| 韩日午夜在线资源一区二区| 六月婷婷精品视频在线观看| 在线综合亚洲欧美网站| 亚洲综合二区| 亚洲专区一区二区在线观看| 日韩欧美91| 免费毛片网站在线观看| 毛片免费在线视频| 五月六月伊人狠狠丁香网| 日韩乱码免费一区二区三区| 麻豆国产精品| 国产成人久视频免费| 欧美在线视频不卡第一页| 国产成人免费视频精品一区二区| 欧美劲爆第一页| 美女无遮挡免费网站| 欧美日韩一区二区在线播放| 亚洲精品第一在线观看视频| 高清不卡毛片| 亚洲欧美极品| 国产黄色免费看| 日本高清视频在线www色| 99性视频| 久久99精品久久久久久不卡| 狠狠做深爱婷婷综合一区| 91免费观看视频| 亚洲成人免费看| 亚洲swag精品自拍一区| a级毛片在线免费观看| 在线观看无码av五月花| 欧美一区二区精品久久久| 成人福利在线视频| 亚洲国产综合第一精品小说| 毛片免费在线视频|