9.2.2 正則表達(dá)式語(yǔ)法介紹2
定界符
原子
元字符
模式修正符
Perl兼容正則表達(dá)式
正則表達(dá)式作為一個(gè)匹配的模版,是由原子(普通字符,例如字符a到z)、特殊字符(元字符,例如*、+和?等)、以及模式修正符三部分組成的文字模式。
一個(gè)最簡(jiǎn)單正則表達(dá)式至少包含一個(gè)原子。
將下面的正則表達(dá)式拆分如下:
'/<a.*?(?:|\\t|\\r|\\n)?href=[\"]?(.+?)[\"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim'
定界符:兩個(gè)斜線”/”。
原子用到了< a href = ‘ “ / >等普通字符和\t \r \n等轉(zhuǎn)義字符
元字符使用了 [] () | . ? * + 等具有特殊含義的字符
用到了模式修正符是在定界符最后一個(gè)斜線之后的三個(gè)字符: s i m
正則表達(dá)式作為一個(gè)匹配的模版,是由原子(普通字符,例如字符a到z)、特殊字符(元字符,例如*、+和?等)、以及模式修正符三部分組成的文字模式。
一個(gè)最簡(jiǎn)單正則表達(dá)式至少包含一個(gè)原子。
將下面的正則表達(dá)式拆分如下:
'/<a.*?(?:|\\t|\\r|\\n)?href=[\"]?(.+?)[\"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim'
定界符:兩個(gè)斜線”/”。
原子用到了< a href = ‘ “ / >等普通字符和\t \r \n等轉(zhuǎn)義字符
元字符使用了 [] () | . ? * + 等具有特殊含義的字符
用到了模式修正符是在定界符最后一個(gè)斜線之后的三個(gè)字符: s i m
1.php
<?php
$str = "aa1aaaaa3aaaa5aaaa77777aaaa2aaaa9aaaaa0aaaaaaa<br>";
$reg = "/\d/";
/* 定界符號(hào): 多種都可以, 常用為 //
*
* 原子 : 最少的一個(gè)匹配單位 (放在定界符中), 在一個(gè)正則表達(dá)式中, 至少要有一個(gè)原子
* 元字符: 元字符不能單獨(dú)使用的,修飾原子, 是用來(lái)擴(kuò)展原子功能的和限定功能 (寫(xiě)在定界符號(hào)中)
*
* 模式修正符號(hào): 修正, 對(duì)模式(正則)修正, (寫(xiě)在定界符號(hào)外面, 寫(xiě)在右邊)
*
*/
echo $str."<br>";
echo preg_replace($reg, "#", $str)."<br>";
print_r(preg_split($reg, $str));
echo '<br>';
if(preg_match($reg, $str, $arr) ) {
echo "正則表達(dá)式 <b>{$reg}</b> 和字符串 <b>{$str}</b> 匹配成功!<br>";
print_r($arr);
} else {
echo "沒(méi)有匹配上<br>";
}
test.php
<?php
$str = "aa1aaaaa3aaaa5aaaa77777aaaa2aaaa9aaaaa0aaaaaaa<br>";
$reg = "/\d/";
if(preg_match($reg, $str, $arr) ) {
echo "正則表達(dá)式 <b>{$reg}</b> 和字符串 <b>{$str}</b> 匹配成功!<br>";
print_r($arr);
} else {
echo "沒(méi)有匹配上<br>";
}