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

首頁 > 學院 > 開發設計 > 正文

Java正則表達式之從入門到精通

2019-11-18 14:30:25
字體:
來源:轉載
供稿:網友

  假如原來沒有使用過正則表達式,那么可能對這個術語和概念會不太熟悉。不過,它們并不是您想象的那么新奇。
  
  請回想一下在硬盤上是如何查找文件的。您肯定會使用 ? 和 * 字符來幫助查找您正尋找的文件。? 字符匹配文件名中的單個字符,而 * 則匹配一個或多個字符。一個如 'data?.dat' 的模式可以找到下述文件:
  
  data1.dat
  
  data2.dat
  
  datax.dat
  
  dataN.dat
  
  假如使用 * 字符代替 ? 字符,則將擴大找到的文件數量。'data*.dat' 可以匹配下述所有文件名:
  
  data.dat
  
  data1.dat
  
  data2.dat
  
  data12.dat
  
  datax.dat
  
  dataXYZ.dat
  
  盡管這種搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你對正則表達式能做什么有一個概念,不過正則表達式的功能更強大,也更靈活。
  
  -------------------------------------------------------
  2.早期起源
  
  早期起源
  
  正則表達式的“祖先”可以一直上溯至對人類神經系統如何工作的早期研究。Warren McCulloch 和 Walter Pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網絡。
  
  1956 年, 一位叫 Stephen Kleene 的美國數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題為“神經網事件的表示法”的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱為“正則集的代數”的表達式,因此采用“正則表達式”這個術語。
  
  隨后,發現可以將這一工作應用于使用Ken Thompson 的計算搜索算法的一些早期研究,Ken Thompson是Unix 的主要發明人。正則表達式的第一個實用應用程序就是 Unix 中的qed 編輯器。
  
  如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現在正則表達式都是基于文本的編輯器和搜索工具中的一個重要部分。
  --------------------------------------------------------
  3.使用正則表達式
  
  在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術對于靜態文本中的簡單搜索和替換任務可能足夠了,但是由于它缺乏靈活性,因此在搜索動態文本時就有困難了,甚至是不可能的。
  
  使用正則表達式,就可以:
  
  1.測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
  
  2.替換文本??梢栽谖臋n中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
  
  3.根據模式匹配從字符串中提取一個子字符串??梢杂脕碓谖谋净蜉斎胱侄沃胁檎姨囟ㄎ淖帧?br />  
  例如,假如需要搜索整個 web 站點來刪除某些過時的材料并替換某些Html 格式化標記,則可以使用正則表達式對每個文件進行測試,看在該文件中是否存在所要查找的材料或 HTML 格式化標記。用這個方法,就可以將受影響的文件范圍縮小到包含要刪除或更改的材料的那些文件。然后可以使用正則表達式來刪除過時的材料,最后,可以再次使用正則表達式來查找并替換那些需要替換的標記。
  
  另一個說明正則表達式非常有用的示例是一種其字符串處理能力還不為人所知的語言。VBScript 是 Visual Basic 的一個子集,具有豐富的字符串處理功能。與 C 類似的 Visual Basic Scripting Edition 則沒有這一能力。正則表達式給 Visual Basic Scripting Edition 的字符串處理能力帶來了明顯改善。不過,可能還是在 VBScript 中使用正則表達式的效率更高,它答應在單個表達式中執行多個字符串操作
  
  4.正則表達式語法
  一個正則表達式就是由普通字符(例如字符 a 到 z)以及非凡字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
  
  這里有一些可能會碰到的正則表達式示例:
  
  Visual BasicVBScript匹配 Scripting Edition
  
  /^/[ /t]*$/chr(34)^/[ /t]*$chr(34)匹配一個空白行。
  
  //d{2}-/d{5}/chr(34)/d{2}-/d{5}chr(34)驗證一個ID號碼是否由一個2位字,一
  個連字符以及一個5位數字組成。
  
  /<(.*)>.*<///1>/chr(34)<(.*)>.*<///1>chr(34)匹配一個 HTML 標記。
  
  下表是元字符及其在正則表達式上下文中的行為的一個完整列表:
  
  字符描述
  
  /將下一個字符標記為一個非凡字符、或一個原義字符、或一個 后向引用、或一個八進制轉義符。例如,'n' 匹配字符 chr(34)nchr(34)。'/n' 匹配一個換行符。序列 '//' 匹配 chr(34)/chr(34) 而 chr(34)/(chr(34) 則匹配 chr(34)(chr(34)。
  
  ^匹配輸入字符串的開始位置。假如設置了 RegEXP 對象的 Multiline 屬性,^ 也匹配 '/n' 或 '/r' 之后的位置。
  
  $匹配輸入字符串的結束位置。假如設置了 RegExp 對象的Multiline 屬性,$ 也匹配 '/n' 或 '/r' 之前的位置。
  
  *匹配前面的子表達式零次或多次。例如,zo* 能匹配 chr(34)zchr(34) 以及chr(34)zoochr(34)。 * 等價于{0,}。
  
  +匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 chr(34)zochr(34) 以及 chr(34)zoochr(34),但不能匹配 chr(34)zchr(34)。+ 等價于 {1,}。
  
  ?匹配前面的子表達式零次或一次。例如,chr(34)do(es)?chr(34) 可以匹配chr(34)dochr(34) 或 chr(34)doeschr(34) 中的chr(34)dochr(34) 。? 等價于 {0,1}。
  
  {n}n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配
  chr(34)Bobchr(34) 中的 'o',但是能匹配 chr(34)foodchr(34) 中的兩個 o。
  
  {n,}n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 chr(34)Bobchr(34) 中的 'o',但能匹配 chr(34)fooooodchr(34) 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。
  
  {n,m}m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, chr(34)o{1,3}chr(34) 將匹配 chr(34)foooooodchr(34) 中的前三個o。'o{0,1}'等價于'o?'。請注重在逗號和兩個數之間不能有空格
  
  ?當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,},{n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的 匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 chr(34)oooochr(34),'o+?' 將匹配單個 chr(34)ochr(34),而 'o+' 將匹配所有 'o'。
  
  .匹配除 chr(34)/nchr(34) 之外的任何單個字符。要匹配包括 '/n' 在內的任何字符,請使用象 '[./n]' 的模式。
  
  (pattern)匹配pattern 并獲取這一匹配。所獲取的匹配可以從產生的Matches 集合得到,在VBScript 中使用 SubMatches 集合,在Visual Basic Scripting Edition 中則使用 $0…$9 屬性。要匹配圓括號字符,請使用 '/(' 或 '/)'。
  
  (?:pattern)匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 chr(34)或chr(34) 字符 () 來組合一個模式的各個部分是很有用。例如, 'industr(?:yies) 就是一個比 'industryindustries' 更簡略的表達式。
  
  (?=pattern)正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,'Windows (?=9598NT2000)' 能匹配chr(34)windows 2000chr(34)中的chr(34)Windowschr(34),但不能匹配chr(34)Windows3 .1chr(34)中chr(34)Windowschr(34)。
  預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。
  
  (?!pattern)負向預查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows(?!9598NT2000)' 能匹配 chr(34)Windows 3.1chr(34) 中的 chr(34)Windowschr(34),但不能匹配 chr(34)Windows 2000chr(34) 中的 chr(34)Windowschr(34)。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始
  
  xy匹配 x 或 y。例如,'zfood' 能匹配 chr(34)zchr(34) 或 chr(34)foodchr(34)。'(zf)ood' 則匹配 chr(34)zoodchr(34) 或 chr(34)foodchr(34)。
  
  [xyz]字符集合。匹配所包含的任意一個字符。例如, '[abc]' 可以匹配 chr(34)plainchr(34) 中的 'a'。
  
  [^xyz]負值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 chr(34)plainchr(34) 中的'p'。
  
  [a-z]字符范圍。匹配指定范圍內的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字符。
  
  [^a-z]負值字符范圍。匹配任何不在指定范圍內的任意字符。例如, '[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字符。
  
  /b匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er/b' 可以匹配chr(34)neverchr(34) 中的 'er',但不能匹配 chr(34)verbchr(34) 中的 'er'。
  
  /B匹配非單詞邊界。'er/B' 能匹配 chr(34)verbchr(34) 中的 'er

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩精品中文字幕| 国内精品国产三级国产在线专| 久久夜色精品亚洲噜噜国产mv| 一本大道久久加勒比香蕉| 欧美性生交xxxxx久久久| 国产在线视频2019最新视频| 日本aⅴ大伊香蕉精品视频| 国语自产偷拍精品视频偷| 日韩二区三区在线| 日韩精品视频中文在线观看| 亚洲二区中文字幕| 91精品视频免费| 亚洲欧美在线免费| 国产亚洲欧洲高清| 国产69精品久久久久久| 国产成人精品国内自产拍免费看| 亚洲国产美女精品久久久久∴| 2025国产精品视频| 亚洲精品狠狠操| 中文字幕亚洲情99在线| xvideos成人免费中文版| 欧美精品videos性欧美| 一区二区中文字幕| 国产精品视频色| 一本大道亚洲视频| 最近2019好看的中文字幕免费| 欧美在线视频a| 精品在线小视频| 欧洲s码亚洲m码精品一区| 欧美亚洲国产日韩2020| 国产精品黄页免费高清在线观看| 欧美老少做受xxxx高潮| 北条麻妃99精品青青久久| 亚洲国产97在线精品一区| 国产精品午夜一区二区欲梦| 亚洲男人天堂手机在线| 精品久久久久久久久久久久| 欧美午夜激情小视频| 美女久久久久久久久久久| 啪一啪鲁一鲁2019在线视频| 国产成人精品久久二区二区91| 欧美巨乳美女视频| 91欧美激情另类亚洲| 91社影院在线观看| 国产z一区二区三区| 97国产一区二区精品久久呦| 成人午夜在线视频一区| 欧美日韩福利电影| 欧美中文在线视频| 国产精品人人做人人爽| 亚洲网站在线观看| 中文字幕日本欧美| 91免费综合在线| 亚洲国产精品久久久| 精品国产欧美成人夜夜嗨| 国产一区二区黑人欧美xxxx| 久久久久久久久国产精品| 国产国语videosex另类| 97超级碰碰人国产在线观看| 亚洲奶大毛多的老太婆| 欧美黄色免费网站| 成人写真视频福利网| 久久五月情影视| 亚洲精品白浆高清久久久久久| 欧美性猛交xxxx乱大交蜜桃| 欧美性猛交xxxx免费看漫画| 成人有码在线播放| 激情亚洲一区二区三区四区| 亚洲无线码在线一区观看| 国产成人精品免费久久久久| 热久久这里只有| 亚洲色图17p| 欧美日韩激情视频8区| 精品久久在线播放| 日韩在线一区二区三区免费视频| 国产日韩在线精品av| 国产精品自拍偷拍视频| 97国产精品视频| 亚洲第一二三四五区| 亚洲bt天天射| 精品国产一区二区三区久久| 欧美大尺度激情区在线播放| 91免费福利视频| 庆余年2免费日韩剧观看大牛| 社区色欧美激情 | 成人有码在线播放| 久久中文字幕在线| 亚洲一区二区三区久久| 欧美老妇交乱视频| 在线电影av不卡网址| 欧美中文在线视频| 精品女厕一区二区三区| 日韩在线视频网站| 91在线观看免费高清| 精品露脸国产偷人在视频| 91精品在线观看视频| 黑人欧美xxxx| 国产国语刺激对白av不卡| 久久久视频在线| 久久青草精品视频免费观看| 欧美性猛交xxxx乱大交3| 奇米成人av国产一区二区三区| 久久人人爽人人爽人人片av高清| 国产精品av在线| 欧美性猛交xxxx免费看漫画| 日韩乱码在线视频| 日韩hd视频在线观看| 色狠狠av一区二区三区香蕉蜜桃| 一区二区在线视频| 懂色av中文一区二区三区天美| 搡老女人一区二区三区视频tv| 91超碰caoporn97人人| 日韩一二三在线视频播| 亚洲黄色有码视频| 在线观看精品自拍私拍| 2020欧美日韩在线视频| 国产日韩欧美夫妻视频在线观看| 亚洲国产高清高潮精品美女| 久久久久久免费精品| 国产精品视频自拍| 国产精品福利网站| 亚洲精品国产精品国自产观看浪潮| 日韩久久精品电影| 在线观看国产成人av片| 欧美福利在线观看| 中文字幕不卡在线视频极品| 日韩在线国产精品| 中文字幕日本精品| 亚洲人成电影网站色…| 成人国产精品免费视频| 欧美国产乱视频| 日韩中文字幕av| 在线观看国产精品日韩av| 在线播放国产一区中文字幕剧情欧美| 日韩美女在线观看一区| 国产精品高潮呻吟久久av野狼| 久久久久999| 国模私拍一区二区三区| 国产精品视频一区二区高潮| 国产偷亚洲偷欧美偷精品| 日韩在线视频免费观看高清中文| 国产精品久久久久久久久久久新郎| 一本一道久久a久久精品逆3p| 91精品视频在线免费观看| 日韩在线观看电影| 狠狠做深爱婷婷久久综合一区| 日韩欧美中文字幕在线播放| 日韩在线视频观看正片免费网站| 国产精品91久久久| 久久久免费精品| 亚洲欧洲日产国产网站| 欧美精品videos另类日本| 久久久在线观看| 国产成人综合精品| 97高清免费视频| 国产亚洲精品激情久久| 久久久久久国产精品美女| 伊人成人开心激情综合网| 91po在线观看91精品国产性色| 成人在线国产精品| 色噜噜狠狠色综合网图区| 亚洲qvod图片区电影| 国产一区二区三区三区在线观看| 日韩高清av在线|