对于像asdftheremainderhere
这样的字符串,使用正则表达式匹配asdf
将字符串拆分为asdf
和theremainderhere
的简单方法是什么?PHP - 捕获正则表达式匹配以及不匹配的剩余部分
我试着使用:
preg_match('/asdf|ghik/', 'asdftheremainderhere', $matches);`
但只有asdf
是$matches
的唯一元素。
对于像asdftheremainderhere
这样的字符串,使用正则表达式匹配asdf
将字符串拆分为asdf
和theremainderhere
的简单方法是什么?PHP - 捕获正则表达式匹配以及不匹配的剩余部分
我试着使用:
preg_match('/asdf|ghik/', 'asdftheremainderhere', $matches);`
但只有asdf
是$matches
的唯一元素。
您可以使用\K
使preg_split其保存分隔符
print_r(preg_split('/(asdf|ghik)\K/', 'asdftheremainderhere'));
结果
Array
(
[0] => asdf
[1] => theremainderhere
)
在$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
)
你可以使用捕获组来做这样的事情,不是吗?
preg_match('/(asdf)(.*)/', 'asdftheremainderhere', $matches);
并添加多行标志,如果你期望换行符,并希望他们在其余部分。
你需要'preg_split'与各地'asdf'捕获组。 – Kasramvd
如何捕获捕获组? '$ matches = preg_split('/(asdf)|(ghik)/',$ string);' –
您可以使用''(asdf | ghik)''。 – Kasramvd