亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

正則表達式教程之元字符的使用詳解

2020-03-16 20:55:31
字體:
來源:轉載
供稿:網友

本文實例講述了正則表達式教程之元字符的使用。分享給大家供大家參考,具體如下:

注:在所有例子中正則表達式匹配結果包含在源文本中的之間,有的例子會使用Java來實現,如果是java本身正則表達式的用法,會在相應的地方說明。所有java例子都在JDK1.6.0_13下測試通過。

一、對特殊字符進行轉義

元字符是一些在正則表達式里有著特殊含義的字符。因為元字符在正則表達式里有著特殊的含義,所以這些字符就無法用來代表它們本身。在元字符前面加上一個反斜杠就可以對它進行轉義,這樣得到的轉義序列將匹配那個字符本身而不是它特殊的元字符含義。如,如果想要匹配[和],就必須對它進行轉義:


。

對元字符轉義需要用到斜杠/字符,這就意味著/字符本向也是一個元字符,要匹配/字符本身,必須轉義成//。如匹配windows文件路徑。

二、匹配空白字符

元字符大致可以分為兩種:一種是用來匹配文本的(如.),另一種是正則表達式的語法所要求的(如[和])。

在進行正則表達式搜索的時候,我們經常會遇到需要對原始文本中里的非打印空白字符進行匹配的情況。比如說,我們可能需要把所有的制表符找出來,或者我們需要把換行符找出來,這類字符很難被直接輸入到一個正則表達式里,這時我們可以使用如下列出的特殊元字符來輸入它們:

 

/b 回退(并刪除)一個字符(Backspace鍵)
/f 換頁符
/n 換行符
/r 回車符
/t 制表符(Tab鍵)
/v 垂直制表符

 

來看一個例子,把文件中的空白行去掉:

文本:

8 5 4 1 6 3  2 7 9
7 6 2 9 5 8  3 4 1
9 3 1 4 2 7  8 5 6

6 9 3 8 7 5  1 2 4
5 1 8 3 4 2  6 9 7
2 4 7 6 1 9  5 3 8

3 26  7 8 4 9 1 5
4 8 9 5 3 1  7 6 2
1 7 5 2 9 6  4 8 3

正則表達式:/r/n/r/n

分析:/r/n匹配一個回車+換行組合,windows操作系統中把它作為文本行的結束標簽。使用正則表達式/r/n/r/n進行的搜索將匹配兩個連續的行尾標簽,而這正好是空白行。

注意:Unix和Linux操作系統中只使用一個換行符來結束一個文本行,換句話說,在Unix或Linux系統中匹配空白行只使用/n/n即可,不需要加上/r。同時適用于windows和Unix/Linux的正則表達式應該包括一個可先的/r和一個必須匹配的/n,即/r?/n/r?/n,這將會在后面的文章中講到。

Java代碼如下:

public static void matchBlankLine() throws Exception{  BufferedReader br = new BufferedReader(new FileReader(new File("E:/九宮格.txt")));  StringBuilder sb = new StringBuilder();  char[] cbuf = new char[1024];  int len = 0;  while(br.ready() && (len = br.read(cbuf)) > 0){    br.read(cbuf);    sb.append(cbuf, 0, len);  }  String reg = "/r/n/r/n";  System.out.println("原內容:/n" + sb.toString());  System.out.println("處理后:-----------------------------");  System.out.println(sb.toString().replaceAll(reg, "/r/n"));}

運行結果如下:

原內容:8 5 4 1 6 3 2 7 97 6 2 9 5 8 3 4 19 3 1 4 2 7 8 5 66 9 3 8 7 5 1 2 45 1 8 3 4 2 6 9 72 4 7 6 1 9 5 3 83 2 6 7 8 4 9 1 54 8 9 5 3 1 7 6 21 7 5 2 9 6 4 8 3 處理后:-----------------------------8 5 4 1 6 3 2 7 97 6 2 9 5 8 3 4 19 3 1 4 2 7 8 5 66 9 3 8 7 5 1 2 45 1 8 3 4 2 6 9 72 4 7 6 1 9 5 3 83 2 6 7 8 4 9 1 54 8 9 5 3 1 7 6 21 7 5 2 9 6 4 8 3

三、匹配特定的字符類別

字符集合(匹配多個字符中的某一個)是最常見的匹配形式,而一些常用的字符集合可以用特殊元字符來代替。這些元字符匹配的是某一類別的字符(類元字符),類元字符并不是必不可少的,因為可以通過逐一列舉有關字符或通過定義一個字符區間來匹配某一類字符,但是使用它們構造出來的正則表達式簡明易懂,在實際應用中很常用。

1、匹配數字與非數字

/d 任何一個數字,等價于[0-9]或[0123456789]
/D 任何一個非數字,等價于[^0-9]或[^0123456789]

2、匹配字母和數字與非字母和數字

字母(A-Z不區分大小寫)、數字、下劃線是一種常用的字符集合,可用如下類元字符:

/w 任何一個字母(不區分大小寫)、數字、下劃線,等價于[0-9a-zA-Z_]
/W 任何一個非字母數字和下劃線,等價于[^0-9a-zA-Z_]

3、匹配空白字符與非空白字符

/s 任何一下空白字符,等價于[/f/n/r/t/v]
/S 任何一下空白字符,等價于[^/f/n/r/t/v]

注意:退格元字符/b沒有不在/s的范圍之內。

4、匹配十六進制或八進制數值

十六進制:用前綴/x來給出,如:/x0A對應于ASCII字符10(換行符),其效果等價于/n。
八進制:用前綴/0來給出,數值本身可以是兩位或三位數字,如:/011對應于ASCII字符9(制表符),其效果等價于/t。

四、使用POSIX字符類

POSIX字符類是很多正則表達式實現都支持的一種簡寫形式。Java也支持它,但JavaScript不支持。POSIX字符如下所示:

 

[:alnum:] 任何一個字母或數字,等價于[a-zA-Z0-9]
[:alpha:] 任何一個字母,等價于[a-zA-Z]
[:blank:] 空格或制表符,等價于[/t]
[:cntrl:] ASCII控制字符(ASCII 0到31,再加上ASCII 127)
[:digit:] 任何一個數字,等價于[0-9]
[:graph:] 任何一個可打印字符,但不包括空格
[:lower:] 任何一個小寫字母,等價于[a-z]
[:print:] 任何一個可打印字符
[:punct:] 既不屬于[:alnum:]和[:cntrl:]的任何一個字符
[:space:] 任何一個空白字符,包括空格,等價于[^/f/n/r/t/v]
[:upper:] 任何一個大寫字母,等價于[A-Z]
[:xdigit:] 任何一個十六進制數字,等價于[a-fA-F0-9]

 

POSIX字符和之前見過的元字符不太一樣,我們來看一個前面利用正則表達式來匹配網頁中的顏色的例子:

文本:<span style="background-color:#3636FF;height:30px;width:60px;">測試</span>

正則表達式:#[[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]]

結果:<span style="background-color:【#3636FF】;height:30px;width:60px;">測試</span>

注意:這里使用的模式以[[開頭、以]]結束,這是使用POSIX字符類所必須的,POSIX字符必須括在[:和:]之間,外層[和]字符用來定義一個集合,內層的[和]字符是POSIX字符類本身的組成部分。

在java中的POSIX字符表示有所不同,不是包括在[:和:]之間,而是以/p開頭,包括在{和}之間,且大小寫有區別,同時增加了/p{ASCII},如下所示:

 

/p{Alnum} 字母數字字符:[/p{Alpha}/p{Digit}]
/p{Alpha} 字母字符:[/p{Lower}/p{Upper}]
/p{ASCII} 所有 ASCII:[/x00-/x7F]
/p{Blank} 空格或制表符:[ /t]
/p{Cntrl} 控制字符:[/x00-/x1F/x7F]
/p{Digit} 十進制數字:[0-9]
/p{Graph} 可見字符:[/p{Alnum}/p{Punct}]
/p{Lower} 小寫字母字符:[a-z]
/p{Print} 可打印字符:[/p{Graph}/x20]
/p{Punct} 標點符號:!"#$%&'()*+,-./:;<=>?@[/]^_`{|}~
/p{Space} 空白字符:[ /t/n/x0B/f/r]
/p{Upper} 大寫字母字符:[A-Z]
/p{XDigit} 十六進制數字:[0-9a-fA-F]

 

希望本文所述對大家正則表達式學習有所幫助。


注:相關教程知識閱讀請移步到正則表達式頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
综合网日日天干夜夜久久| 欧洲亚洲免费视频| 亚洲国产高清福利视频| 欧美日韩福利在线观看| 亚洲三级av在线| 亚洲美女av在线播放| 一本色道久久综合狠狠躁篇怎么玩| 不卡av日日日| 国产精品久久久久久久久久99| 欧美激情图片区| 国内免费久久久久久久久久久| 亚洲精品中文字幕av| 国产一区私人高清影院| 亚洲国产欧美一区二区丝袜黑人| 久久精品电影网| 久久久国产一区二区三区| 日韩中文字幕在线观看| 国产精品成人播放| 色综合伊人色综合网| 亚洲品质视频自拍网| 国产美女主播一区| 91成人在线观看国产| 国产精品久久久久久婷婷天堂| 久久久久久久久91| 91久久久在线| 欧美激情在线有限公司| 日本91av在线播放| 最新的欧美黄色| 亚洲电影天堂av| 欧美成人午夜激情在线| 欧美裸体视频网站| 欧美亚洲另类激情另类| 国产主播喷水一区二区| 66m—66摸成人免费视频| 69av视频在线播放| 亚洲成人激情在线| 欧美日韩一区二区在线| 97**国产露脸精品国产| 久久久欧美一区二区| 欧美性videos高清精品| 日韩一区二区三区在线播放| 精品欧美国产一区二区三区| 国产网站欧美日韩免费精品在线观看| 欧美专区日韩视频| 欧美在线视频一二三| 自拍亚洲一区欧美另类| 成人免费网站在线| 日韩激情片免费| 国产小视频国产精品| 欧美成人性生活| 精品无人国产偷自产在线| 成人国产精品一区| 国产精品成av人在线视午夜片| 自拍偷拍亚洲精品| 欧美二区乱c黑人| 最近中文字幕mv在线一区二区三区四区| 日韩精品高清在线观看| 按摩亚洲人久久| 色婷婷亚洲mv天堂mv在影片| 欧美日韩在线视频一区| 91精品国产高清| 青青草99啪国产免费| 国产91av在线| 91成人国产在线观看| 亚洲欧洲一区二区三区久久| 亚洲精品欧美日韩专区| 欧美多人爱爱视频网站| 国产成人aa精品一区在线播放| 日韩高清免费在线| 国产欧美日韩免费看aⅴ视频| 超在线视频97| 国语自产精品视频在线看一大j8| 一本一本久久a久久精品牛牛影视| 亚洲视频欧美视频| 538国产精品视频一区二区| 国产欧美 在线欧美| 国产欧美日韩最新| 岛国精品视频在线播放| 懂色av一区二区三区| 亚洲国产精品久久精品怡红院| 欧美理论电影网| 国产xxx69麻豆国语对白| 日韩一区av在线| 精品国产区一区二区三区在线观看| 欧美最猛性xxxxx亚洲精品| 国产精品白嫩初高中害羞小美女| 夜夜嗨av一区二区三区四区| 亚洲国产日韩欧美在线动漫| 国产精品久久国产精品99gif| 成人网欧美在线视频| 亚洲欧美国产日韩中文字幕| 中文字幕少妇一区二区三区| 日韩高清电影免费观看完整版| 日韩精品免费在线观看| 欧美日韩性视频在线| 国产精品亚洲综合天堂夜夜| 欧美成人全部免费| 亚洲自拍小视频免费观看| 久热在线中文字幕色999舞| 国产精品九九久久久久久久| 日韩高清电影好看的电视剧电影| 国产视频亚洲视频| 国产有码一区二区| 亚洲成人免费网站| 91精品国产91久久久久久吃药| 亚洲精品国产美女| 7m精品福利视频导航| 国产日产久久高清欧美一区| 亚洲精品久久在线| 欧美国产精品人人做人人爱| 国内精品久久久久久久| 91午夜理伦私人影院| 96pao国产成视频永久免费| 日韩电影网在线| 久久精品91久久香蕉加勒比| 免费av一区二区| 久久伊人精品一区二区三区| 亚洲激情久久久| 日韩欧美中文字幕在线播放| 精品国产乱码久久久久久天美| 尤物yw午夜国产精品视频| 91精品国产色综合久久不卡98| 欧美激情综合色综合啪啪五月| 欧美激情一级精品国产| 91日韩在线播放| 国产一区二区三区三区在线观看| 国产综合在线观看视频| 国内精品久久久| 久久久亚洲国产天美传媒修理工| 亚洲色图18p| 国产精品色视频| 国产免费一区视频观看免费| 国产在线观看精品一区二区三区| 91日本在线观看| 国产精品白嫩初高中害羞小美女| 欧美裸体xxxx极品少妇| 成人午夜激情网| 精品亚洲男同gayvideo网站| 欧美激情a在线| 91国自产精品中文字幕亚洲| 精品国产鲁一鲁一区二区张丽| 裸体女人亚洲精品一区| 日韩美女在线播放| 国产一区二区三区免费视频| 久久夜精品va视频免费观看| 国产成人综合精品在线| 亚洲国产精品yw在线观看| 97香蕉超级碰碰久久免费的优势| 日韩中文视频免费在线观看| 久久视频免费观看| 色狠狠久久aa北条麻妃| 国产成人精品一区二区| 欧美大片在线看免费观看| 日韩免费av一区二区| 亚洲精品国产美女| 日韩一区二区三区在线播放| 国产精品pans私拍| 亚洲美女精品久久| 中文字幕精品网| 久久久精品一区二区| 成人精品久久av网站| 青青久久aⅴ北条麻妃| 久久久久久有精品国产| 久久久91精品国产|