2016-06-10 29 views
0

對於像asdftheremainderhere這樣的字符串,使用正則表達式匹配asdf將字符串拆分爲asdftheremainderhere的簡單方法是什麼?PHP - 捕獲正則表達式匹配以及不匹配的剩餘部分

我試着使用:

preg_match('/asdf|ghik/', 'asdftheremainderhere', $matches);` 

但只有asdf$matches的唯一元素。

+0

你需要'preg_split'與各地'asdf'捕獲組。 – Kasramvd

+0

如何捕獲捕獲組? '$ matches = preg_split('/(asdf)|(ghik)/',$ string);' –

+0

您可以使用''(asdf | ghik)''。 – Kasramvd

回答

1

您可以使用\K使preg_split其保存分隔符

print_r(preg_split('/(asdf|ghik)\K/', 'asdftheremainderhere')); 

結果

Array 
(
    [0] => asdf 
    [1] => theremainderhere 
) 
2

$matches陣列$matches[0]將全面圖案匹配,$matches[1]將是第一個捕獲組(asdf|ghik)$matches[2]將是第二捕獲組(.*)這是任何字符0次或多次:

preg_match('/(asdf|ghik)(.*)/', 'asdftheremainderhere', $matches); 

print_r($matches); 

產量:

Array 
(
    [0] => asdftheremainderhere 
    [1] => asdf 
    [2] => theremainderhere 
) 
2

你可以使用捕獲組來做這樣的事情,不是嗎?

preg_match('/(asdf)(.*)/', 'asdftheremainderhere', $matches); 

並添加多行標誌,如果你期望換行符,並希望他們在其餘部分。