PHP ?? ??? ????
????
? ??? ??????. d? ? ??? ???? ?????. ??? ?? 10?? 8?? ???? ???, ??? ?? ? ??? ??? ?? ????
???? ????? ???????. Atom? ??? ? ? ??? ??? ? ??? ?? ??? ????? ??? ????? ?? ?????.
?? ??? ???? ? ?? ??? ????? ????? ???? ???.
?? ??? ??? ???. ??? ??? ??? ??? ?? ?? ??? ? ?? ????. ?? ??? ?? ??? ? ????? ????.
??? ? ??? ?? ??? ???? ?? ?? ????.
?? ???????:
元字符 | 功能說明 |
---|---|
* | 是代表匹配前面的一個原子,匹配0次或者任意多次前面的字符。 |
+ | 匹配一次或多前前面的一個字符 |
? | 前面的字符可有可無【可選】 有或沒有 |
. | 更標準一些應該把點算作原子。匹配除了n以外的所有字符 |
![]() | 或者。注:它的優(yōu)先級最低了。 |
^ | 必須要以抑揚符之后的字符串開始 |
$ | 必須要以$之前的字符結尾 |
b | 詞邊界 |
B | 非邊界 |
{m} | 有且只能出現(xiàn)m次 |
{n,m} | 可以出現(xiàn)n到m次 |
{m,} | 至少m次,最大次數不限制 |
() | 改變優(yōu)先級或者將某個字符串視為一個整體,匹配到的數據取出來也可以使用它 |
+? ?? ??
<?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? ??????? 2? ?? ?? ? ????.
.(?) 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? ??????? 2? ?? ?? ? ????.
|(?? ??) ?? ?? ?? ????
???? ? ??
<?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 '沒有匹配到'; } ?>
??? ??? ????.
??:
1. abccd ?? abbcd? ?????($string1 ?? $ ???3).
2. ??? ???? ??? ??? ?? ? ?? ? ??? ??? 1???.
3. ()? ??? ????? ???? ? ??? ???? ??? 1? ?? ? ?? ??? ?????.
^(circumflex), ^
<?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. ? ?? ??? ?? ??? ??? ????. "Zhu ??? ?? ??????."? ???? ? ?? ??? ??? ?? 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. ????? ?? ??? ???. ??? ??? ?? ??? ????? ?????.
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? ???? ? ??? ?????
3. $string2? ???? ??? ?????
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? ?? ??? ?? ??(?? ? ??? ?)?? ? ??? ??? ? ????.
{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? 0-9? ??????. 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?(?) ????? ??????.