<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ###元字符 拋出問題: \d 代表匹配一個字符。而我現在想要匹配十個八個,任意多個數字腫么辦? 這個時候我們就要用到元字符。在使用原子的時候,發現只能夠匹配一個字符,可是要匹配多個字符就出現了問題。 這個時候,我們需要借助元字符來幫我們修飾原子,實現更多的功能。 先不要被下面的這些給嚇到。我們一點一點做實驗,就全明白了。主要是這幾個得多用用。 自己準備個小卡片,幫助自己記憶是最好的。 我們來看: | 元字符 | 功能說明 | | -- | -- | |* | 是代表匹配前面的一個原子,匹配0次或者任意多次前面的字符。| |+ |匹配一次或多前前面的一個字符| |?| 前面的字符可有可無【可選】 有或沒有| |. |更標準一些應該把點算作原子。匹配除了\n以外的所有字符| |![document/2015-09-04/55e92c421434d](http://box.kancloud.cn/document_2015-09-04_55e92c421434d.png)| 或者。注:它的優先級最低了。| |^ | 必須要以抑揚符之后的字符串開始| |$| 必須要以$之前的字符結尾| |\b | 詞邊界| |\B |非邊界| |{m}| 有且只能出現m次| |{n,m} |可以出現n到m次| |{m,}| 至少m次,最大次數不限制| | () | 改變優先級或者將某個字符串視為一個整體,匹配到的數據取出來也可以使用它 | ####+ 匹配最少1次前面的字符 ~~~ <?php $zz = '/\d+/'; $string = "迪奧和奧迪250都是我最愛"; //待會兒再試試中間沒有0-9的情況 //$string = "迪奧和奧迪都是我最愛"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結果為:'; var_dump($matches); }else{ echo '沒有匹配到'; } ?> ~~~ 匹配成功,證明了\d+中的+。\d是匹配數字,而+是最少匹配一次前面的字符。 ####* 匹配0次或者任意多次前面的字符 ~~~ <?php $zz = '/\w*/'; $string = "!@!@!!@#@!$@#!"; //待會兒再試試中間沒有0-9的情況 //$string1 = "!@#!@#!abcABC#@#!"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結果為:'; var_dump($matches); }else{ echo '沒有匹配到'; } ?> ~~~ 說明,注釋掉的$string1和$string都匹配成功了。因為,\w是匹配的0-9A-Za-z_,而*是說明前面的\w可以不存在。如果存在可以有1個或者多個。 ####? 前面的字符出現0次或者1次,可有可無 ~~~ <?php $zz = '/ABC\d?ABC/'; $string = "ABC1ABC"; //待會兒再試試中間沒有0-9的情況 //$string1 = "ABC888888ABC"; //$string2 = "ABCABC"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結果為:'; var_dump($matches); }else{ echo '沒有匹配到'; } ?> ~~~ 匹配$string,$string2成功,但是匹配$string1失敗。 因為匹配前后都是ABC,中間是一個0-9。0-9可有可無,但是不能有多個。 ####. (點) 匹配除\n以外的所有字符 ~~~ <?php $zz = '/gg.+gg/'; $string = "ABC1ABC"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結果為:'; var_dump($matches); }else{ echo '沒有匹配到'; } ?> ~~~ 匹配$string,$string2成功,但是匹配$string1失敗。 因為匹配前后都是ABC,中間是一個0-9。0-9可有可無,但是不能有多個。 ### |(豎線),或者,優先級最低 我們通過實驗來看優先級和或者的匹配 ~~~ <?php $zz = '/abc|bcd/'; $string1 = "abccd"; $string2 = "ggggbcd"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 我們來看看: 1. 最開始我匹配的想法是想匹配的是abccd或者是abbcd。可是,匹配$string1和$string2,匹配出來的結果卻是abc和bcd. 2. 實現了或者匹配,匹配出來了abc或者是bcd。它還沒有字符串連續在一起的優先級高。 ####那么問題來了,我要匹配上例中的abccd或者是abbcd怎么辦? 需要使用到() 來改變優先級。 ~~~ <?php $zz = '/ab(c|b)cd/'; $string1 = "起來abccd閱兵"; $string2 = "ggggbcd"; $string3 = '中國abbcd未來'; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 結果如下: ![document/2015-09-04/55e9378310adf](http://box.kancloud.cn/document_2015-09-04_55e9378310adf.png) 結論: 1. 確實匹配了了abccd或者abbcd($string1 or $string3)。 2. 但是匹配的數組里面多了一個元素,這個元素的下標為1 3. ()中的內容只要匹配成功,會把匹配到的數據放到下標為1的這個數組元素中。 ### ^ (抑揚符),必須要以^之后的字符串開始 ~~~ <?php $zz = '/^李文凱好帥\w+/'; $string1 = "李文凱好帥abccdaaaasds"; //$string2沒有以李文凱好帥開始 $string2 = "帥abccdaaaasds"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 通過實驗發現以下結論: 1. $string1匹配成功,$string2沒有匹配成功 2. 因為$string1是以指定的字符開始的 3. 而$string2并沒有以^之后的字符開始 4. 翻譯這個正則的意思就是:以要李文凱好帥開始后面接a-zA-Z0-9_最少一個字符。 ### $ (美元符)必須要以$之前的字符結束 ~~~ <?php $zz = '/\d+努力$/'; $string1 = "12321124333努力"; //$string2 $string2 = "12311124112313力"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 我們運行一下看一下結果,得出來的結論: 1. $string1 匹配成功,而$string2匹配不成功 2. $之前的字符是\d+,后面接著中文的努力。 3. 因此,匹配的是這一個整體。\d指的是0-9的整型,+號代表最少一個0-9 ###\b和\B 詞邊界和非詞邊界 我們來講解什么是邊界: 1. 正則表達示是有邊界的,這個邊界是定界符的開始和結尾是正則的邊界。 2. this是一個英文單詞,后面加上一個空格,意味著這個詞結束了,到達了這個詞的邊界 \b詞邊界,就是指必須要在最前或者最后。 \B非邊界,就是不能在一個正則表達示的最前或者最后。 ~~~ <?php $zz = '/\w+\b/'; $string1 = "this is a apple"; $string2 = "thisis a apple"; $string3 = "thisisaapple"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 結論: 1. $string1、$string2和$string3都匹配成功。 2. $string1匹配的時候this 空格是邊界 3. $string2匹配的時候thisis是邊界 4. $string3匹配的時候,thisisaapple到了整個正則表達示的最后,因此也是邊界。所以匹配成功。 我們來實驗一下非詞邊界: ~~~ <?php $zz = '/\Bthis/'; $string1 = "hellothis9"; //$string2 = "hello this9"; //$string2 = "this9中國萬歲"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 總結: 1. 匹配$string1成功而$string2不成功。 2. 因為\B后接的是this,所以this不能在詞邊界(空格和開始結尾)的位置出現。 ### {m}有且只能出現m次 ~~~ <?php $zz = '/喝\d{3}酒/'; $string1 = "喝988酒"; //$string2 = "喝98811酒"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 結論: 上例中\d{3}我規定了0-9只能出現3次,多一次少一次都不行。 ### {n,m} 可以出現n到m次 ~~~ <?php $zz = '/喝\d{1,3}酒/'; $string1 = "喝9酒"; //$string2 = "喝988酒"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 結論: 上例中\d{1,3}我規定了0-9只能出現1次,2次或者3次。其它次數都是錯的 ### {m,} 至少m次,最大次數不限制 ~~~ <?php $zz = '/喝\d{2,}/'; $string1 = "喝9"; //$string2 = "喝98"; //$string3 = "喝98122121"; if (preg_match($zz, $string1, $matches)) { echo '匹配到了,結果為:'; var_dump($matches); } else { echo '沒有匹配到'; } ?> ~~~ 結論: 上例中\d{2,}我規定喝后面的0-9最少出現兩次,最多次數不限。因此$string1是匹配不成功的,$string2是匹配成功的。$string3是匹配成功的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看