亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于?的作用

$subject = "abcbddef"; $pattern = '/a(.*?)d/'; preg_match($pattern, $subject, $matches); print_r($matches); 代碼修改為如上,應該更好理解?的作用,輸出結果為: Array ( [0] => abcbd [1] => bcb ) 如果不加問號,則結果為: Array ( [0] => abcbdd [1] => bcbd )

正在回答

1 回答

簡單點:/a*/ 匹配 字符串'aaaaaa' 全部匹配; /a*?/匹配 字符口串 'aaa',結果為空

*出現盡可能多的次數, ?出現0次或一次

*?匹配盡可能少的次數,即有可能盡量無需匹配。

正則?用法

當該字符緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串

preg_match()非全局匹配的情況下,只匹配一次。正則中的子模式會依次在返回的數組索引1的位置開始出現。

分析正則(.*?)

匹配除\n之外的任意單個字符(.),任意次(*),匹配盡可能少(? 0次或1次)。簡單點: 匹配任意字符。

所以正則' /a(.*?)d/? 可以匹配字符串'ad','add','aadd'

因為非全局匹配,故用它使用pre_match匹配出來的數組第1個元素分別是,ad,ad,aad,

又由于有子模式(正則中的括號),所以第二個元素值 空,空,a,

不加?則匹配盡可能多。

0 回復 有任何疑惑可以回復我~
#1

qq_恩_0

meikandong
2015-12-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
PHP進階篇
  • 參與學習       181922    人
  • 解答問題       2668    個

輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序

進入課程

關于?的作用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號