<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      feishuang008

      導航

      正則表達式小結

       

      常用的元字符常用的反義代碼常用的限定符
      代碼/語法 說明 代碼/語法 說明 代碼/語法 說明
      \w 匹配字母或數字或下劃線或漢字 \W 匹配任意不是字母、數字、下劃線、漢字的字符 * 重復零次或者更多次
      \s 匹配任意的空白字符 \S 匹配任意不是空白符的字符 + 重復一次或更多次
      \d 匹配數字 \D 匹配任意非數字的字符 ? 重復零次或一次
      \b 匹配單詞的開始或結束 \B 匹配不是單詞開始或結束的位置 {n} 重復n次
      ^ 匹配字符串的開始 [^x] 匹配除了x以外的任意字符 {n,} 重復n次到更多次
      $ 匹配字符串的結束 [^aeiou] 匹配除了aeiou這幾個字母以外的任意字符 {n,m} 重復n到m次
      . 匹配除換行符以外的任意字符        

      字符轉義:

      如果你想查找元字符本身的話,比如你查找.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用\來取消這些字符的特殊意義。因此,你應該使用\.和\*。當然,要查找\本身,你也得用\\.

      分枝條件:

      正則表達式里的分枝條件指的是有幾種規則,如果滿足其中任意一種規則都應該當成匹配,具體方法是用|把不同的規則分隔開。聽不明白?沒關系,看例子:

      0\d{2}-\d{8}|0\d{3}-\d{7}這個表達式能匹配兩種以連字號分隔的電話號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。

      分組與捕獲:

      常用分組語法
         分類  代碼/語法  說明
         捕獲  (exp)  匹配exp,并捕獲文本到自動命名的組里
       (?<name>exp)  匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
       (?:exp)  匹配exp,不捕獲匹配的文本,也不給此分組分配組號
          零寬斷言  (?=exp)  匹配exp前面的位置
       (?<=exp)  匹配exp后面的位置(瀏覽器不支持)
       (?!exp)  匹配后面跟的不是exp的位置
       (?<!exp)  匹配前面不是exp的位置(瀏覽器不支持)
          注釋  (?#comment)  這種類型的分組不對正則表達式的處理產生任何影響,用于提供注釋讓人閱讀

       

      我們已經提到了怎么重復單個字符(直接在字符后面加上限定符就行了);但如果想要重復多個字符又該怎么辦?你可以用小括號來指定子表達式(也叫做分組),然后你就可以指定這個子表達式的重復次數了,你也可以對子表達式進行其它一些操作(后面會有介紹)。
      (\d{1,3}\.){3}\d{1,3}是一個簡單的IP地址匹配表達式。要理解這個表達式,請按下列順序分析它:\d{1,3}匹配1到3位的數字,(\d{1,3}\.){3}匹配三位數字加上一個英文句號(這個整體也就是這個分組)重復3次,最后再加上一個一到三位的數字(\d{1,3})。
      IP地址中每個數字都不能大于255. 經常有人問我, 01.02.03.04 這樣前面帶有0的數字, 是不是正確的IP地址呢? 答案是: 是的, IP 地址里的數字可以包含有前導 0 (leading zeroes).
      不幸的是,它也將匹配256.300.888.999這種不可能存在的IP地址。如果能使用算術比較的話,或許能簡單地解決這個問題,但是正則表達式中并不提供關于數學的任何功能,所以只能使用冗長的分組,選擇,字符類來描述一個正確的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。

      后向引用:

      使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內容)可以在表達式或其它程序中作進一步的處理。默認情況下,每個分組會自動擁有一個組號,規則是:從左向右,以分組的左括號為標志,第一個出現的分組的組號為1,第二個為2,以此類推。

      呃……其實,組號分配還不像我剛說得那么簡單:

      • 分組0對應整個正則表達式
      • 實際上組號分配過程是要從左向右掃描兩遍的:第一遍只給未命名組分配,第二遍只給命名組分配--因此所有命名組的組號都大于未命名的組號
      • 你可以使用(?:exp)這樣的語法來剝奪一個分組對組號分配的參與權.

      后向引用用于重復搜索前面某個分組匹配的文本。例如,\1代表分組1匹配的文本。難以理解?請看示例:

      \b(\w+)\b\s+\1\b可以用來匹配重復的單詞,像go go, 或者kitty kitty。這個表達式首先是一個單詞,也就是單詞開始處和結束處之間的多于一個的字母或數字(\b(\w+)\b),這個單詞會被捕獲到編號為1的分組中,然后是1個或幾個空白符(\s+),最后是分組1中捕獲的內容(也就是前面匹配的那個單詞)(\1)。

      你也可以自己指定子表達式的組名。要指定一個子表達式的組名,請使用這樣的語法:(?<Word>\w+)(或者把尖括號換成'也行:(?'Word'\w+)),這樣就把\w+的組名指定為Word了。要反向引用這個分組捕獲的內容,你可以使用\k<Word>,所以上一個例子也可以寫成這樣:\b(?<Word>\w+)\b\s+\k<Word>\b。

       零寬斷言:

      接下來的四個用于查找在某些內容(但并不包括這些內容)之前或之后的東西,也就是說它們像\b,^,$那樣用于指定一個位置,這個位置應該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。

      正則表達式中有前瞻(Lookahead)和后顧(Lookbehind)的概念,這兩個術語非常形象的描述了正則引擎的匹配行為。需要注意一點,正則表達式中的前和后和我們一般理解的前后有點不同。一段文本,我們一般習慣把文本開頭的方向稱作“前面”,文本末尾方向稱為“后面”。但是對于正則表達式引擎來說,因為它是從文本頭部向尾部開始解析的(可以通過正則選項控制解析方向),因此對于文本尾部方向,稱為“前”,因為這個時候,正則引擎還沒走到那塊,而對文本頭部方向,則稱為“后”,因為正則引擎已經走過了那一塊地方。如下圖所示:

      '

      所謂的前瞻就是在正則表達式匹配到某個字符的時候,往“尚未解析過的文本”預先看一下,看是不是符合/不符合匹配模式,而后顧,就是在正則引擎已經匹配過的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我們又稱為肯定式匹配和否定式匹配。

      現代高級正則表達式引擎一般都支持都支持前瞻,對于后顧支持并不是很廣泛,因此我們采用否定式前瞻來實現我們的需求,比如“找出不以某個特定字符串打頭的條目”。

       

      posted on 2017-04-27 11:50  feishuang008  閱讀(145)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产精品自拍午夜福利| 亚洲熟妇一区二区三个区| 国产成人免费| 国产午夜在线观看视频播放| 欧美怡春院一区二区三区| 久青草视频在线免费观看| 免费激情网址| 国产一二三四区中| 性色av无码久久一区二区三区| 青青青久热国产精品视频| 韩国免费a级毛片久久| 亚洲色大成网站WWW久久| caoporn免费视频公开| 51午夜精品免费视频| 自拍偷在线精品自拍偷99| 国产破外女出血视频| 男女裸体影院高潮| 亚洲人成人伊人成综合网无码| 国产亚洲精品久久久网站好莱| 久久av中文字幕资源网| 国产亚洲AV电影院之毛片| 色AV专区无码影音先锋| 日韩午夜福利视频在线观看| 最近中文字幕完整版hd| 欧美大胆老熟妇乱子伦视频| 艳妇臀荡乳欲伦交换h在线观看 | 国产一级精品毛片基地| 99精品国产兔费观看久久99| 国产成人亚洲日韩欧美| 亚洲国产精品综合色在线| 高清自拍亚洲精品二区| A级日本乱理伦片免费入口| 亚洲国产激情一区二区三区 | 成人精品视频一区二区三区| 丰满人妻熟妇乱又伦精品软件| 农村乱色一区二区高清视频| 极品人妻videosss人妻| 久久男人av资源站| 悠悠人体艺术视频在线播放| 无码国产偷倩在线播放| 国产一区二区三区小说|