版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一篇:什么是正則表達(dá)式?在學(xué)習(xí)java的正則表達(dá)式之前,先介紹一下什么是正則表達(dá)式:1、正則表達(dá)式是一種強(qiáng)大而靈活的文本處理工具;2、在技術(shù)上,正則表達(dá)式實(shí)現(xiàn)了對(duì)字符串的操作,在先前,這些任務(wù)一般都指派給了java中的string、stringbuffer和stringtokenizer這些類;3、正則表達(dá)式一般和i/o聯(lián)合使用;4、正則表達(dá)式可以讓我們以編程方式指定那些可以再輸入字符串中發(fā)現(xiàn)的復(fù)雜的文本模式,一旦我們發(fā)現(xiàn)了這些模式,那么就可以按照任何我們所希望的方式進(jìn)行處理了;5、正則表達(dá)式提供了一種緊湊的、動(dòng)態(tài)的語(yǔ)言,能夠以一種完全通用的方式來(lái)解決各種字符串處理(例如:匹配、選擇、編輯及
2、驗(yàn)證)問(wèn)題;第二篇:如何創(chuàng)建正則表達(dá)式?好了,看到這里我想大家對(duì)正則表達(dá)式應(yīng)該已經(jīng)有了一定的了解了吧,下面我來(lái)介紹一下如何創(chuàng)建正則表達(dá)式:要 學(xué)習(xí)正則表達(dá)式就必須了解正則表達(dá)式的構(gòu)造集,只有了解了構(gòu)造集,掌握了模式匹配的原則和方法,你才能寫(xiě)出適合你需要的正則表達(dá)式,打個(gè)比方,要構(gòu)造一個(gè) 房屋模型,就要使用這一個(gè)個(gè)的積木,讓他們以適當(dāng)?shù)姆绞竭M(jìn)行拼合,構(gòu)造集中的匹配符號(hào)就好像是搭建房屋模型的一個(gè)個(gè)小積木,用于創(chuàng)建正則表達(dá)式的完全構(gòu)造 列表可以在javadocs的pattern類中找到,為了方便查詢,我在這里也把這些構(gòu)造集列了出來(lái),以供參考(注:摘自jdk 5.0 documentation)資料參
3、考:正則表達(dá)式的構(gòu)造摘要 1)字符 x 字符 x 反斜線字符 0n 帶有八進(jìn)制值 0 的字符 n (0 = n = 7) 0nn 帶有八進(jìn)制值 0 的字符 nn (0 = n = 7) 0mnn 帶有八進(jìn)制值 0 的字符 mnn(0 = m = 3、0 = n = 7) xhh 帶有十六進(jìn)制值 0x 的字符 hh uhhhh 帶有十六進(jìn)制值 0x 的字符 hhhh t 制表符 (u0009) /table n 新行(換行)符 (u000a) r 回車符 (u000d) f 換頁(yè)符 (u000c) a 報(bào)警 (bell) 符 (u0007) e 轉(zhuǎn)義符 (u001b) cx 對(duì)應(yīng)于 x 的控制符
4、 2)字符類 abc a、b 或 c(簡(jiǎn)單類) abc 任何字符,除了 a、b 或 c(否定) a-za-z a 到 z 或 a 到 z,兩頭的字母包括在內(nèi)(范圍) a-dm-p a 到 d 或 m 到 p:a-dm-p(并集) a-z&def d、e 或 f(交集) a-z&bc a 到 z,除了 b 和 c:ad-z(減去) a-z&m-p a 到 z,而非 m 到 p:a-lq-z(減去) 3)預(yù)定義字符類 . 任何字符(與行結(jié)束符可能匹配也可能不匹配) d 數(shù)字:0-9 d 非數(shù)字: 0-9 s 空白字符: tnx0bfr s 非空白字符:s w 單詞字符:a-za-z_0-9 w 非
5、單詞字符:w 4)posix 字符類(僅 us-ascii) plower 小寫(xiě)字母字符:a-z pupper 大寫(xiě)字母字符:a-z pascii 所有 ascii:x00-x7f palpha 字母字符:plowerpupper pdigit 十進(jìn)制數(shù)字:0-9 palnum 字母數(shù)字字符:palphapdigit ppunct 標(biāo)點(diǎn)符號(hào):!#$%&()*+,-./:;?_| pgraph 可見(jiàn)字符:palnumppunct pprint 可打印字符:pgraphx20 pblank 空格或制表符: t pcntrl 控制字符:x00-x1fx7f pxdigit 十六進(jìn)制數(shù)字:0-9a-f
6、a-f pspace 空白字符: tnx0bfr 5)java.lang.character 類(簡(jiǎn)單的 java 字符類型) pjavalowercase 等效于 java.lang.character.islowercase() pjavauppercase 等效于 java.lang.character.isuppercase() pjavawhitespace 等效于 java.lang.character.iswhitespace() pjavamirrored 等效于 java.lang.character.ismirrored() 6)unicode 塊和類別的類 pingree
7、k greek 塊(簡(jiǎn)單塊)中的字符 plu 大寫(xiě)字母(簡(jiǎn)單類別) psc 貨幣符號(hào) pingreek 所有字符,greek 塊中的除外(否定) pl&plu 所有字母,大寫(xiě)字母除外(減去) 7)邊界匹配器 行的開(kāi)頭 $ 行的結(jié)尾 b 單詞邊界 b 非單詞邊界 a 輸入的開(kāi)頭 g 上一個(gè)匹配的結(jié)尾 z 輸入的結(jié)尾,僅用于最后的結(jié)束符(如果有的話) z 輸入的結(jié)尾 8)greedy 數(shù)量詞 x? x,一次或一次也沒(méi)有 x* x,零次或多次 x+ x,一次或多次 xn x,恰好 n 次 xn, x,至少 n 次 xn,m x,至少 n 次,但是不超過(guò) m 次 9)reluctant 數(shù)量詞 (后邊
8、多加了“?”)x? x,一次或一次也沒(méi)有 x*? x,零次或多次 x+? x,一次或多次 xn? x,恰好 n 次 xn,? x,至少 n 次 xn,m? x,至少 n 次,但是不超過(guò) m 次 10)possessive 數(shù)量詞 (后邊多加了“+”)x?+ x,一次或一次也沒(méi)有 x*+ x,零次或多次 x+ x,一次或多次 xn+ x,恰好 n 次 xn,+ x,至少 n 次 xn,m+ x,至少 n 次,但是不超過(guò) m 次 11)logical 運(yùn)算符 xy x 后跟 y x|y x 或 y (x) x,作為捕獲組 12)back 引用 n 任何匹配的 nth 捕獲組 13)引用 nothi
9、ng,但是引用以下字符 q nothing,但是引用所有字符,直到 e e nothing,但是結(jié)束從 q 開(kāi)始的引用 14)特殊構(gòu)造(非捕獲) (?:x) x,作為非捕獲組 (?idmsux-idmsux) nothing,但是將匹配標(biāo)志由 on 轉(zhuǎn)為 off (?idmsux-idmsux:x) x,作為帶有給定標(biāo)志 on - off 的非捕獲組 (?=x) x,通過(guò)零寬度的正 lookahead (?!x) x,通過(guò)零寬度的負(fù) lookahead (?=x) x,通過(guò)零寬度的正 lookbehind (?x) x,作為獨(dú)立的非捕獲組 作為一個(gè)例子,下面的每一個(gè)表達(dá)式都是合法的正則表達(dá)式,
10、并且所有表達(dá)式都會(huì)成功匹配字符序列rudolph。第一個(gè):rudolph 注:就是單詞本身,絕對(duì)匹配;第二個(gè):rrudolph 注:第一個(gè)字母可以在 r 和 r 中選擇一個(gè)匹配,所以也能成功;第三個(gè):rraeioua-zol.* 注:第一個(gè)字母在 r 和 r 中匹配,第二個(gè)字母在原音字母aeiou中匹配,第三個(gè)字母在a到z的26個(gè)字母中匹配,第四個(gè)字母和第五個(gè)字母被絕對(duì)匹配,后面的字符可以是任意的,因此這樣的匹配也能成功;第四個(gè):r.* 注:第一個(gè)字母被絕對(duì)匹配,后面的字符可以是任意的匹配原則,所以也成功了。在這個(gè)例子中遇到了一個(gè).*的匹配符號(hào),在這里我只解釋:. 代表任何字符、* 代表任何字
11、符即.可以出現(xiàn)零次或多次,這是一個(gè)非常常用的匹配符號(hào),大家最好能夠記住。類似的,要想寫(xiě)出符合自己需求的正則表達(dá)式,可以參照構(gòu)造類表對(duì)各類字符,以及匹配原則和方法的規(guī)定實(shí)現(xiàn)。第三篇:正則表達(dá)式中的一個(gè)重要概念:量詞為 什么說(shuō)量詞是正則表達(dá)式中的一個(gè)重要的概念呢,如何有java編程思想一書(shū)的同學(xué)可以看到,量詞被放到了單獨(dú)的一個(gè)章節(jié)進(jìn)行了講述,由此可見(jiàn)其一同一 般,主要是因?yàn)榱吭~構(gòu)造集在正則表示式的編寫(xiě)的時(shí)候是使用率非常平凡的構(gòu)造集,也可以理解為是正則表達(dá)式的一個(gè)靈魂,所以要重視它的重要性。量詞,字面上的理解就是數(shù)量詞,在正則表達(dá)式它又是被如何重新理解的呢?在java編程思想一書(shū)中的定義是:“量詞描
12、述了一個(gè)模式吸收輸入文本的方式”,這里的方式被分為三種:貪婪的、勉強(qiáng)的、占有的。通俗的解釋可以是這樣的:對(duì)一個(gè)字符或字符串在對(duì)出現(xiàn)次數(shù)上進(jìn)行的限制和匹配。在上面的構(gòu)造集中也寫(xiě)出了這三種方式的匹配標(biāo)準(zhǔn),這里就不做介紹了,對(duì)于這三種方式有什么區(qū)別,我給出java編程思想一書(shū)做出的解釋,大家可以根據(jù)自己的業(yè)務(wù)需要進(jìn)行選擇。1)貪婪的。量詞總是貪婪的,除非有其他的選項(xiàng)被設(shè)置。貪婪表達(dá)式會(huì)為所有可能的模式發(fā)現(xiàn)盡可能多的匹配。導(dǎo)致此問(wèn)題的一個(gè)典型理由就是假定我們的模式僅能匹配第一個(gè)可能的字符組,如果它是貪婪的,那么它就會(huì)繼續(xù)往下匹配。2)勉強(qiáng)的。有問(wèn)號(hào)來(lái)指定,這個(gè)量詞匹配滿足模式所需的最少字符數(shù)。因此也稱
13、作懶惰的,最少匹配的,非貪婪的、或不貪婪的。3) 占有的。量詞當(dāng)前只有在java語(yǔ)言中才可用(在其他語(yǔ)言中不可用),并且它也是更高級(jí),因此我們大概不會(huì)立刻用到它。當(dāng)正則表達(dá)式被應(yīng)用于字符串時(shí),它 會(huì)產(chǎn)生相當(dāng)多的狀態(tài),以便在匹配失敗時(shí)可以回溯。而占有的量詞并不保存這些中間狀態(tài),因此我們可以防止回溯。它們常常由于防止正則表達(dá)式失控,因此可以使 正則表達(dá)式執(zhí)行起來(lái)更有效。注意點(diǎn):在使用量詞的時(shí)候,最好將要使用量詞的字符或字符串有括號(hào)括起來(lái);第四篇:模式與匹配器在介紹了一些正則表達(dá)式的基礎(chǔ)之后,下面說(shuō)說(shuō)正則表達(dá)式在java中是如何體現(xiàn)的,說(shuō)的更明白一些也就是在java中如何實(shí)現(xiàn)、如何編寫(xiě)代碼。在jav
14、a 中,正則表達(dá)式是通過(guò)java.util.regex包中的pattern和matcher兩個(gè)類來(lái)實(shí)現(xiàn)的。一個(gè)pattern對(duì)象表示一個(gè)正則表達(dá)式的 編譯版本,可以做類似的對(duì)比,就好像是java文件和class文件,一個(gè)是讓程序員看的,一個(gè)是讓虛擬機(jī)執(zhí)行的,在java中一個(gè)正則表達(dá)式要轉(zhuǎn)換為 pattern對(duì)象才能最終被使用,pattern的complie()方法可以實(shí)現(xiàn),同時(shí),我們可以使用matcher()方法和輸入字符串從編譯過(guò)的 pattern對(duì)象中產(chǎn)生matcher對(duì)象,在matcher中可以得到你想要得到的處理完成以后的結(jié)果值的信息。下來(lái)介紹matcher類中的幾個(gè)重要方法:1)fi
15、nd():用戶發(fā)現(xiàn)應(yīng)用于charsequence(即輸入的字符串)的多重模式匹配,find()就像是一種迭代器,可以在輸入字符串中向前移動(dòng)迭代,在find()的第二版中,可以指定一個(gè)整型參數(shù)以告知要開(kāi)始搜索的字符的位置;2)groupcount():在介紹這個(gè)方法的之前,現(xiàn)介紹一個(gè)概念:“組” 組是由圓括號(hào)分開(kāi)的多個(gè)正則表達(dá)式,隨后可以根據(jù)它們的組號(hào)進(jìn)行調(diào)用。第0組表示整個(gè)匹配表達(dá)式,第1組表示第一個(gè)用圓括號(hào)括起來(lái)的組,等等,因此,在表達(dá)式a(b(c)d中有三個(gè)組:第0組abcd,第1組bc,第2組c。 groupcount()方法返回該模式中分組的數(shù)目。要注意的是第0組不包括在內(nèi)。3)gro
16、up():返回由以前匹配操作所匹配的輸入子序列。4)group(int i):返回在以前匹配操作期間由給定組捕獲的輸入子序列。如果匹配成功,但是指定的組沒(méi)有匹配輸入字符串的任何部分,將返回null。5)start(int group):返回在以前的匹配操作期間,由給定組所捕獲的子序列的初始索引。6)end(int group):返回在以前的匹配操作期間,由給定組所捕獲子序列的最后字符之后的偏移量。7)start(): 返回以前匹配的初始索引。8)end(): 返回最后匹配字符之后的偏移量。模式標(biāo)記:模式標(biāo)記是可以影響正則表達(dá)式的匹配行為的標(biāo)記參數(shù),為方便理解,列出這些標(biāo)記的作用:pattern
17、.canon_eq :?jiǎn)⒂靡?guī)范等價(jià)。 pattern.case_insensitive :?jiǎn)⒂貌粎^(qū)分大小寫(xiě)的匹配。 pattern.comments :模式中允許空白和注釋。 pattern.dotall :?jiǎn)⒂?dotall 模式,在dotall模式中,表達(dá)式.匹配多有字符,包括行終結(jié)符,缺省情況下,.表達(dá)式不匹配行終結(jié)符。 pattern.literal :?jiǎn)⒂媚J降淖置嬷捣治觥?pattern.multiline :?jiǎn)⒂枚嘈心J健?pattern.unicode_case :?jiǎn)⒂?unicode 感知的大小寫(xiě)折疊。 pattern.unix_lines :?jiǎn)⒂?unix 行模式。替換操作
18、:替換操作在正則表達(dá)式中起了尤為重要的作用,能夠?qū)崿F(xiàn)替換操作的幾個(gè)方法是:1)replacefirst(string replacement) :用replacement替換輸入字符串中最先匹配的部分。2)replaceall(string replacement) :用replacement替換輸入字符串中所有匹配的部分。3) appendreplacement(stringbuffer sb, string replacement) :逐步的在sb中執(zhí)行替換;而不是像replacefirst()那樣僅替換第一個(gè)匹配,或者像replaceall()那樣替換所有的匹配。這是個(gè)非常 重要的方法,
19、因?yàn)樗试S我們通過(guò)調(diào)用某些方法來(lái)執(zhí)行一些其他處理來(lái)產(chǎn)生replacement(而不像replacefirst()和 replaceall()只能輸入固定字符串)。有了這個(gè)方法,我們就可以通過(guò)編程來(lái)實(shí)現(xiàn)將目標(biāo)拆分成組以及創(chuàng)建功能強(qiáng)大的替換。4)appendtail(stringbuffer sb) :在一個(gè)或多個(gè)appendreplacement()調(diào)用之后被調(diào)用,以便復(fù)制輸入字符串的剩余部分。reset(string s)方法:可以將matcher對(duì)象應(yīng)用于一個(gè)新的字符序列。到 此為止,正則表達(dá)式在java中的一般應(yīng)用就差不多了,如果想要了解更多關(guān)于正則表達(dá)式在java中的使用可以參考java
20、編程思想、 mastering regular expression(第二版),jeffrey e.f.friedl著(oreilly,2002)。正則表達(dá)式的應(yīng)用實(shí)例:package aaron;import java.util.*;import java.util.regex.*;public class main public main() public static void main(string arg) main main=new main(); main.emailmre(lzq_3180163.com); main.replacemre(3.23+4.34433-34433.
21、3434,f); /* * 驗(yàn)證email的正則表達(dá)式 * param textstr string */ public void emailmre(string textstr) string mre = w+w+.w+; pattern p = ppile(mre); matcher m = p.matcher(textstr); if (m.find() system.out.println(驗(yàn)證成功!); else system.out.println(驗(yàn)證失敗!); /* * 將指定格式的字符串替換成要求的字符,本例中將表達(dá)式中的浮點(diǎn)數(shù)提取出來(lái)替換, * 浮點(diǎn)數(shù)的
22、精度要求為整數(shù)位1-8位,小數(shù)位1-8位 * 同時(shí),將檢索出的浮點(diǎn)數(shù)的位置在控制臺(tái)輸出 * param textstr string */ public void replacemre(string textstr, string requeststr) string mre = d1,8.d1,8; stringbuffer sb = new stringbuffer(); pattern p = ppile(mre); matcher m = p.matcher(textstr); int i = 1; while (m.find() system.out.printl
23、n(找到第 +i+ 個(gè)匹配: + m.group()+ 位置為: + m.start() + - + (m.end()-1); m.appendreplacement(sb, requeststr); i+; m.appendtail(sb); system.out.println(替換后的結(jié)果字符串為: + sb); 運(yùn)行結(jié)果:驗(yàn)證成功!找到第1個(gè)匹配:3.23 位置為:0-3找到第2個(gè)匹配:4.34433 位置為:5-11找到第3個(gè)匹配:34433.3434 位置為:13-22替換后的結(jié)果字符串為:f+f-f 本文來(lái)自csdn博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:/r
24、cyl2003/archive/2007/04/22/1574571.aspx常用的正則表達(dá)式匹配在編寫(xiě)處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說(shuō),正則表達(dá)式就是記錄文本規(guī)則的代碼。例如,d+就是一個(gè)簡(jiǎn)潔的代碼,代表著規(guī)則1位或更多位數(shù)字,2008就符合這個(gè)規(guī)則,而a3則不符合(它包含了不是數(shù)字的字符)。 學(xué)習(xí)正則表達(dá)式的最好方法是從例子開(kāi)始,理解例子之后再自己對(duì)例子進(jìn)行修改,實(shí)驗(yàn)。下面給出了一些常用的例子,并對(duì)它們作了詳細(xì)的說(shuō)明。匹配中文字符的正則表達(dá)式: u4e00-u9fa5匹配雙字節(jié)字符(包括漢字在內(nèi)):x00-
25、xff應(yīng)用:計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ascii字符計(jì)1)stotype.len=function()return this.replace(x00-xff/g,aa).length;匹配空行的正則表達(dá)式:ns| *r匹配html標(biāo)記的正則表達(dá)式:/.*|/ 匹配首尾空格的正則表達(dá)式:(s*)|(s*$)應(yīng)用:javascript中沒(méi)有像vbscript那樣的trim函數(shù),我們就可以利用這個(gè)表達(dá)式來(lái)實(shí)現(xiàn),如下:stotype.trim = function()return this.replace(/(s*)|(s*$)/g, );利用正則表
26、達(dá)式分解和轉(zhuǎn)換ip地址:下面是利用正則表達(dá)式匹配ip地址,并將ip地址轉(zhuǎn)換成對(duì)應(yīng)數(shù)值的javascript程序:function ip2v(ip)re=/(d+).(d+).(d+).(d+)/g /匹配ip地址的正則表達(dá)式if(re.test(ip)return regexp.$1*math.pow(255,3)+regexp.$2*math.pow(255,2)+regexp.$3*255+regexp.$4*1elsethrow new error(not a valid ip address!)不過(guò)上面的程序如果不用正則表達(dá)式,而直接用split函數(shù)來(lái)分解可能更簡(jiǎn)單,程序如下:var
27、ip=68ip=ip.split(.)alert(ip值是:+(ip0*255*255*255+ip1*255*255+ip2*255+ip3*1)匹配email地址的正則表達(dá)式:w+(-+.w+)*w+(-.w+)*.w+(-.w+)*匹配網(wǎng)址url的正則表達(dá)式:http:/(w-+.)+w-+(/w- ./?%&=*)?利用正則表達(dá)式去除字串中重復(fù)的字符的算法程序:注:此程序不正確,原因見(jiàn)本貼回復(fù)var s=abacabefgeeiivar s1=s.replace(/(.).*1/g,$1)var re=new regexp(+s1+,g)var s2=s.repl
28、ace(re,) alert(s1+s2) /結(jié)果為:abcefgi我原來(lái)在csdn上發(fā)貼尋求一個(gè)表達(dá)式來(lái)實(shí)現(xiàn)去除重復(fù)字符的方法,最終沒(méi)有找到,這是我能想到的最簡(jiǎn)單的實(shí)現(xiàn)方法。思路是使用后向引用取出包括重復(fù)的字符,再以重復(fù)的字符建立第二個(gè)表達(dá)式,取到不重復(fù)的字符,兩者串連。這個(gè)方法對(duì)于字符順序有要求的字符串可能不適用。得用正則表達(dá)式從url地址中提取文件名的javascript程序,如下結(jié)果為page1s=/index.htmls=s.replace(/(.*/)0,(.+).*/ig,$2)alert(s)利用正則表達(dá)式限制網(wǎng)頁(yè)表單里的文本框輸入內(nèi)容
29、:用正則表達(dá)式限制只能輸入中文:onkeyup=value=/blog/value.replace(/u4e00-u9fa5/g,) onbeforepaste=clipboarddata.setdata(text,clipboarddata.getdata(text).replace(/u4e00-u9fa5/g,) 用正則表達(dá)式限制只能輸入全角字符: onkeyup=value=/blog/value.replace(/uff00-uffff/g,) onbeforepaste=clipboarddata.setdata(text,clipboarddata.getdata(text).r
30、eplace(/uff00-uffff/g,) 用正則表達(dá)式限制只能輸入數(shù)字:onkeyup=value=/blog/value.replace(/d/g,) onbeforepaste=clipboarddata.setdata(text,clipboarddata.getdata(text).replace(/d/g,) 用正則表達(dá)式限制只能輸入數(shù)字和英文:onkeyup=value=/blog/value.replace(/w/g,) onbeforepaste=clipboarddata.setdata(text,clipboarddata.getdata(text).replace(
31、/d/g,) 本文來(lái)自csdn博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:/rcyl2003/archive/2007/12/15/1937771.aspx oracle 常用函數(shù)java連接各類數(shù)據(jù)庫(kù)主要代碼 java正則表達(dá)式j(luò)ava 2009-11-10 16:35 閱讀225 評(píng)論0 字號(hào): 大大 中中 小小 java正則表達(dá)式的解釋說(shuō)明 表達(dá)式意義:1.字符x 字符 x。例如a表示字符a 反斜線字符。在書(shū)寫(xiě)時(shí)要寫(xiě)為d)任何字符(與行結(jié)束符可能匹配也可能不匹配)d 數(shù)字:0-9d 非數(shù)字: 0-9s 空白字符: tnx0bfrs 非空白字符:sw 單詞字符:a-za-z
32、_0-9w 非單詞字符:w4.posix 字符類(僅 us-ascii)(注意反斜杠要寫(xiě)兩次,例如plower寫(xiě)為plower)plower 小寫(xiě)字母字符:a-z。pupper 大寫(xiě)字母字符:a-zpascii 所有 ascii:x00-x7fpalpha 字母字符:plowerpupperpdigit 十進(jìn)制數(shù)字:0-9palnum 字母數(shù)字字符:palphapdigitppunct 標(biāo)點(diǎn)符號(hào):!#$%&()*+,-./:;?_|pgraph 可見(jiàn)字符:palnumppunctpprint 可打印字符:pgraphx20pblank 空格或制表符: tpcntrl 控制字符:x00-x1fx
33、7fpxdigit 十六進(jìn)制數(shù)字:0-9a-fa-fpspace 空白字符: tnx0bfr5.java.lang.character 類(簡(jiǎn)單的 java 字符類型)pjavalowercase 等效于 java.lang.character.islowercase()pjavauppercase 等效于 java.lang.character.isuppercase()pjavawhitespace 等效于 java.lang.character.iswhitespace()pjavamirrored 等效于 java.lang.character.ismirrored()6.unicod
34、e 塊和類別的類pingreek greek 塊(簡(jiǎn)單塊)中的字符plu 大寫(xiě)字母(簡(jiǎn)單類別)psc 貨幣符號(hào)pingreek 所有字符,greek 塊中的除外(否定)pl&plu 所有字母,大寫(xiě)字母除外(減去)7.邊界匹配器 行的開(kāi)頭,請(qǐng)?jiān)谡齽t表達(dá)式的開(kāi)始處使用。例如:(abc)表示以abc開(kāi)頭的字符串。注意編譯的時(shí)候要設(shè)置參數(shù)multiline,如 pattern p = ppile(regex,pattern.multiline);$ 行的結(jié)尾,請(qǐng)?jiān)谡齽t表達(dá)式的結(jié)束處使用。例如:(bca).*(abc$)表示以bca開(kāi)頭以abc結(jié)尾的行。b 單詞邊界。例如b(abc)
35、表示單詞的開(kāi)始或結(jié)束包含有abc,(abcjj、jjabc 都可以匹配)b 非單詞邊界。例如b(abc)表示單詞的中間包含有abc,(jjabcjj匹配而jjabc、abcjj不匹配)a 輸入的開(kāi)頭g 上一個(gè)匹配的結(jié)尾(個(gè)人感覺(jué)這個(gè)參數(shù)沒(méi)什么用)。例如gdog表示在上一個(gè)匹配結(jié)尾處查找dog如果沒(méi)有的話則從開(kāi)頭查找,注意如果開(kāi)頭不是dog則不能匹配。z 輸入的結(jié)尾,僅用于最后的結(jié)束符(如果有的話)行結(jié)束符 是一個(gè)或兩個(gè)字符的序列,標(biāo)記輸入字符序列的行結(jié)尾。以下代碼被識(shí)別為行結(jié)束符: 新行(換行)符 (n)、 后面緊跟新行符的回車符 (rn)、 單獨(dú)的回車符 (r)、 下一行字符 (u0085)
36、、 行分隔符 (u2028) 或 段落分隔符 (u2029)。z 輸入的結(jié)尾當(dāng)編譯模式時(shí),可以設(shè)置一個(gè)或多個(gè)標(biāo)志,例如pattern pattern = ppile(patternstring,pattern.case_insensitive + pattern.unicode_case);下面六個(gè)標(biāo)志都是支持的:case_insensitive:匹配字符時(shí)與大小寫(xiě)無(wú)關(guān),該標(biāo)志默認(rèn)只考慮us ascii字符。unicode_case:當(dāng)與case_insensitive結(jié)合時(shí),使用unicode字母匹配multiline:和$匹配一行的開(kāi)始和結(jié)尾,而不是整個(gè)輸入unix_l
37、ines: 當(dāng)在多行模式下匹配和$時(shí),只將n看作行終止符dotall: 當(dāng)使用此標(biāo)志時(shí),.符號(hào)匹配包括行終止符在內(nèi)的所有字符canon_eq: 考慮unicode字符的規(guī)范等價(jià)8.greedy 數(shù)量詞x? x,一次或一次也沒(méi)有x* x,零次或多次x+ x,一次或多次xn x,恰好 n 次xn, x,至少 n 次xn,m x,至少 n 次,但是不超過(guò) m 次9.reluctant 數(shù)量詞x? x,一次或一次也沒(méi)有x*? x,零次或多次x+? x,一次或多次xn? x,恰好 n 次xn,? x,至少 n 次xn,m? x,至少 n 次,但是不超過(guò) m 次10.possessive 數(shù)量詞x?+ x
38、,一次或一次也沒(méi)有x*+ x,零次或多次x+ x,一次或多次xn+ x,恰好 n 次xn,+ x,至少 n 次xn,m+ x,至少 n 次,但是不超過(guò) m 次greedy,reluctant,possessive的區(qū)別在于:(注意僅限于進(jìn)行.等模糊處理時(shí))greedy量 詞被看作“貪婪的”,因?yàn)樗谝淮尉妥x入整個(gè)被模糊匹配的字符串。如果第一個(gè)匹配嘗試(整個(gè)輸入字符串)失敗,匹配器就會(huì)在被匹配字符串中的最后一位后退一個(gè)字符并且再次嘗試,重復(fù)這個(gè)過(guò)程,直到找到匹配或者沒(méi)有更多剩下的字符可以后退為止。根據(jù)表達(dá)式中使用的量詞,它最后試圖匹配的內(nèi)容是1 個(gè)或者0個(gè)字符。但是,reluctant量詞采取相反的方式:它們從被匹配字符串的開(kāi)頭開(kāi)始,然后逐步地一次讀取一個(gè)字符搜索匹配。它們最后試圖匹配的內(nèi)容是整個(gè)輸入字符串。最后,possessive量詞總是讀完
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京郵電大學(xué)《程序設(shè)計(jì)語(yǔ)言B》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西省上饒市2024年中考數(shù)學(xué)二模試題含答案
- 九江職業(yè)大學(xué)《商業(yè)推廣設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇航空職業(yè)技術(shù)學(xué)院《Premere視頻編輯應(yīng)用與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 黃淮學(xué)院《舞蹈編創(chuàng)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】第十二章 簡(jiǎn)單機(jī)械 章末練習(xí)-2024-2025學(xué)年八年級(jí)下冊(cè)人教版物理
- 重慶商務(wù)職業(yè)學(xué)院《工程制圖與CAD》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶第二師范學(xué)院《藥物流行病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江長(zhǎng)征職業(yè)技術(shù)學(xué)院《普通生物學(xué)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江橫店影視職業(yè)學(xué)院《建筑工程計(jì)里與計(jì)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025寒假散學(xué)典禮(休業(yè)式)上校長(zhǎng)精彩講話:以董宇輝的創(chuàng)新、羅振宇的堅(jiān)持、馬龍的熱愛(ài)啟迪未來(lái)
- 2025年浙江中外運(yùn)有限公司招聘筆試參考題庫(kù)含答案解析
- 建筑公司2025年度工作總結(jié)和2025年工作安排計(jì)劃
- 電壓損失計(jì)算表
- 福建省福州市2023-2024學(xué)年高二上學(xué)期期末測(cè)試英語(yǔ)試卷(含答案)
- 腦疝病人的觀察與護(hù)理
- 人民醫(yī)院建設(shè)項(xiàng)目背景分析
- 初級(jí)會(huì)計(jì)實(shí)務(wù)題庫(kù)(613道)
- 2024年高考地理時(shí)事熱點(diǎn):環(huán)保(附答案解析)
- 招標(biāo)代理機(jī)構(gòu)選取技術(shù)標(biāo)投標(biāo)方案(技術(shù)方案)
- 北師大版本八年級(jí)上冊(cè)第一章單元測(cè)試卷(A卷)【含答案】
評(píng)論
0/150
提交評(píng)論