課程
/后端開發
/PHP
/PHP進階篇
(.*?)這個匹配的是什么
2017-07-31
源自:PHP進階篇 3-6
正在回答
其實有兩個plist,一個是SwiftWeather的,一個是SwiftWeatherTests里面的,你看下是不是寫錯了是不是版本的問題?
$subject = "abcaaaaaaaaaadef";
$pattern = '/a.*?d/';
preg_match($pattern, $subject, $matches);
print_r($matches);?
//在這種情況下,.*會一直匹配,加了?后,變成非貪婪模式,?后跟的是d,所以會匹配至d結束
//運行結果是
Array ( ????[0]?=>?abcjhjkhhljkhd )
加了()小括號之后,會再一次輸出小括號中匹配的內容
$subject = "abcjhjkhhljkhdef";
$pattern = '/a(.*?)d/';
print_r($matches);
結果為:
Array ( ????[0]?=>?abcjhjkhhljkhd ????[1]?=>?bcjhjkhhljkh )
我看的時候也被這個問題困擾了,不曉得現在的理解對不對,加油,共勉。
.點號字符,? 匹配任何單個字符(除換行符外)。
*號字符,匹配0或多次匹配,意思是要么不匹配,要么匹配多次,點號與星號.*在一起是匹配人任意數量的除換行符之外的字符。
?問號字符,作為量詞,表示 0 次或 1 次匹配。位于量詞后面用于改變量詞的貪婪特性。重要的是在量次后面改變其貪婪屬性,前面的*是量次,且是貪婪屬性,后面跟問號?,則變化成非貪婪屬性,則盡可能少的匹配,也就是從之前的匹配任意數量的字符(仍然是換行符除外)變為了0次或一次匹配,匹配成功就一次,匹配失敗就0次。
()圓括號,舉例說明,eg: a(b)c,在這個例子中,用abcac來進行匹配的話,可以得到ac,abc兩個結果,意思是小括號中的內容在能匹配的情況下是需要匹配的,匹配不到內容也可以跳過。
以上是我的理解,謝謝!
兩個字符之間的字符串或數字
.點 ?匹配任何單個字符。例如正則表達式r.t匹配這些字符串:rat、rut、r t,但是不匹配root。 * 匹配0或多個正好在它之前的那個字符。例如正則表達式。*意味著能夠匹配任意數量的任何字符。 ? 匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。
舉報
輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序
2 回答為什么$0是匹配index.php
2 回答#^[^0-9]$#其實是匹配什么?
1 回答正則匹配輸出的數組為什么是這樣的。
1 回答為什么匹配了兩次
1 回答preg_match怎么精準匹配的
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-03-26
其實有兩個plist,一個是SwiftWeather的,一個是SwiftWeatherTests里面的,你看下是不是寫錯了是不是版本的問題?
2018-07-03
$subject = "abcaaaaaaaaaadef";
$pattern = '/a.*?d/';
preg_match($pattern, $subject, $matches);
print_r($matches);?
//在這種情況下,.*會一直匹配,加了?后,變成非貪婪模式,?后跟的是d,所以會匹配至d結束
//運行結果是
加了()小括號之后,會再一次輸出小括號中匹配的內容
$subject = "abcjhjkhhljkhdef";
$pattern = '/a(.*?)d/';
preg_match($pattern, $subject, $matches);
print_r($matches);
結果為:
我看的時候也被這個問題困擾了,不曉得現在的理解對不對,加油,共勉。
2018-07-03
.點號字符,? 匹配任何單個字符(除換行符外)。
*號字符,匹配0或多次匹配,意思是要么不匹配,要么匹配多次,點號與星號.*在一起是匹配人任意數量的除換行符之外的字符。
?問號字符,作為量詞,表示 0 次或 1 次匹配。位于量詞后面用于改變量詞的貪婪特性。重要的是在量次后面改變其貪婪屬性,前面的*是量次,且是貪婪屬性,后面跟問號?,則變化成非貪婪屬性,則盡可能少的匹配,也就是從之前的匹配任意數量的字符(仍然是換行符除外)變為了0次或一次匹配,匹配成功就一次,匹配失敗就0次。
()圓括號,舉例說明,eg: a(b)c,在這個例子中,用abcac來進行匹配的話,可以得到ac,abc兩個結果,意思是小括號中的內容在能匹配的情況下是需要匹配的,匹配不到內容也可以跳過。
以上是我的理解,謝謝!
2017-08-01
兩個字符之間的字符串或數字
2017-08-01
.點 ?匹配任何單個字符。例如正則表達式r.t匹配這些字符串:rat、rut、r t,但是不匹配root。
* 匹配0或多個正好在它之前的那個字符。例如正則表達式。*意味著能夠匹配任意數量的任何字符。
? 匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。