2014-01-09 27 views
0

我想了解的子模式是如何工作的,我有點困惑的東西:PHP:試圖瞭解子模式正則表達式匹配

$var2 = 'cat dog cow moose bat'; 
$match = preg_match(
    "/(dog)/", 
    $var2, 
    $arr 
); 
var_dump($arr); 
array(2) { [0]=> string(3) "dog" [1]=> string(3) "dog" } 

我不知道爲什麼有數組中的2個元素。閱讀我的PHP書(從書中引用)我假設數組中的第0個元素是整個字符串的匹配,而第二個元素只是子字符串的匹配。它是否正確?只是想確保我明白這一點。

「數組的第零個元素被設置爲針對該 第一個元素相匹配的整個字符串是相匹配的第一個子模式(如果有的話),所述 第二元件是相匹配的子串的子串第二個子模式,等等。「從preg_match()文檔

+0

是你是正確的,在你的情況下,你只有1個元素,所以匹配[0] =匹配[1] – luxcem

回答

0

提取物:

如果提供的比賽,則充滿了搜索的結果。
$matches[0]將包含匹配完整模式的文本,
$matches[1]將具有匹配第一個捕獲的括號內的子模式的文本,依此類推。

然後,/(dog)/正則表達式,你必須:

  • $matches[0]/(dog)/結果(全模式)
  • $matches[1](dog)結果(第一個捕獲組)

如果你的第一個捕獲組等於你的完整模式,然後match[0] = match[1]

0

及其正確....

  • [0] =匹配滿圖案 - 即狗
  • [1] =第一捕獲 - 自從你整個圖案即狗

也被捕獲(()),那麼兩者將是相同的。

如果使用正則表達式/cat (dog)/結果將是

  • [0] =匹配滿圖案 - 即貓狗
  • [1] =第一捕獲 - 即狗