2016-06-10 25 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); 

并添加多行标志,如果你期望换行符,并希望他们在其余部分。