課程
/后端開發
/PHP
/PHP進階篇
.表示除了換行符,其它都能匹配,*表示0到多,那么在這里.*就表示a和d之間0到多個字母。?是懶惰模式,盡量少的匹配,那么就應該是取0個,應該什么都沒有才對呀,為什么會顯示bc呢
2016-07-29
源自:PHP進階篇 3-5
正在回答
我的也是怎么解決啊?直接使用快捷鍵提示就好了?免得自己拼寫錯誤。
.*? 是盡可能的少, 但不是說直接為0,是在匹配到的前提下,盡可能的少取。
這道題是有abcd這個情況的,所以取這個。
再比如 ?原來的$str = 'abcdaaaad’ ? ?這個的話 ?如果是貪婪 就會取到'abcdaaaad' ?非貪婪(懶惰)就會取到'abcd'而不是 ? 空。
否則還用正則表達式干嘛? 直接默認為空就行了,還多一種 懶惰模式沒有意義。
????? 一般人認為?表示懶惰模式但是:
???? '/a(.*?)d/'是匹配了兩個"內的內容,.表示匹配任意字符,*表示匹配0次以上,合在一起就是匹配全文字符串,但是因為前后有引號顯示,所以匹配的是引號內的全文。而?則是表示非貪婪匹配,也就是碰到符合這個條件的立馬就匹配,你可以把?取消掉試試就能立馬看出差別了。推薦多去看看正則30分鐘入門教程,絕對經典。
<?php$subject = "my email is [email protected]";//在這里補充代碼,實現正則匹配,并輸出郵箱地址$pattern = '/[\w\-]+@\w+\.\w+/';preg_match($pattern, $subject, $matches);echo $matches[0];?>
解釋一下'/[\w\-]+@\w+\.\w+/':判斷是否為有效的Email格式.^ 匹配一行的開頭\w 指數字英文加下劃線 \.指一個字符"."\- 指一個字符"-"[\w\.\-] 指一個范圍 即 數字、字母、下劃線、字符"."、字符"-"+ 量詞 一個或多個[\w\.\-]+ 指一個或多個[\w\.\-] 這樣的字符,如 "aaa" "-ab" "c" "s._-l"@ 指一個字符"@"量詞 一個或零個* 量詞 零個或多個
計算機學習
*?????? 重復任意次,但盡可能少重復
+??????? 重復1次或更多次,但盡可能少重復
???????? 重復0次或1次,但盡可能少重復
{n,m}???????? 重復n到m次,但盡可能少重復
{n,}????? 重復n次以上,但盡可能少重復
所以并不是取0個,,舉個例子
a.*?b匹配最短的,以a開始,以b結束的字符串。如果把它應用于aabab的話,它會匹配aab和ab
舉報
輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序
2 回答'/a(.*?)d/'怎么理解
1 回答求解釋$p = '/[\d]{3,4}\-[\d]{8,9}/';
2 回答課程中 ‘/a(.*?)d/’ 的 (.*?) 什么意思?
1 回答'/a(.*?)d/'第一個匹配的是abcd,為什么第二次匹配的是bc?恰好是都不包含a和d,正則表達式明明有a和d的,好郁悶
2 回答/\d+\-\d+/
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-03-26
我的也是怎么解決啊?直接使用快捷鍵提示就好了?免得自己拼寫錯誤。
2016-11-22
.*? 是盡可能的少, 但不是說直接為0,是在匹配到的前提下,盡可能的少取。
這道題是有abcd這個情況的,所以取這個。
再比如 ?原來的$str = 'abcdaaaad’ ? ?這個的話 ?如果是貪婪 就會取到'abcdaaaad' ?非貪婪(懶惰)就會取到'abcd'而不是 ? 空。
否則還用正則表達式干嘛? 直接默認為空就行了,還多一種 懶惰模式沒有意義。
2016-08-06
????? 一般人認為?表示懶惰模式但是:
???? '/a(.*?)d/'是匹配了兩個"內的內容,.表示匹配任意字符,*表示匹配0次以上,合在一起就是匹配全文字符串,但是因為前后有引號顯示,所以匹配的是引號內的全文。而?則是表示非貪婪匹配,也就是碰到符合這個條件的立馬就匹配,你可以把?取消掉試試就能立馬看出差別了。推薦多去看看正則30分鐘入門教程,絕對經典。
<?php
$subject = "my email is [email protected]";
//在這里補充代碼,實現正則匹配,并輸出郵箱地址
$pattern = '/[\w\-]+@\w+\.\w+/';
preg_match($pattern, $subject, $matches);
echo $matches[0];
?>
解釋一下'/[\w\-]+@\w+\.\w+/':判斷是否為有效的Email格式.
^ 匹配一行的開頭
\w 指數字英文加下劃線
\.指一個字符"."
\- 指一個字符"-"
[\w\.\-] 指一個范圍 即 數字、字母、下劃線、字符"."、字符"-"
+ 量詞 一個或多個
[\w\.\-]+ 指一個或多個[\w\.\-] 這樣的字符,如 "aaa" "-ab" "c" "s._-l"
@ 指一個字符"@"
量詞 一個或零個
* 量詞 零個或多個
2016-07-29
*?????? 重復任意次,但盡可能少重復
+??????? 重復1次或更多次,但盡可能少重復
???????? 重復0次或1次,但盡可能少重復
{n,m}???????? 重復n到m次,但盡可能少重復
{n,}????? 重復n次以上,但盡可能少重復
所以并不是取0個,,舉個例子
a.*?b匹配最短的,以a開始,以b結束的字符串。如果把它應用于aabab的話,它會匹配aab和ab