使用PHP
,我有以下代码:
$text = '[text 1] highlight("ABC DEF") [text 2] highlight("GHI JKL") [text 3] [text 4]';
然后我想要catch
以下groups
:
group 1: highlight("ABC DEF") [text 2]
group 2: highlight("GHI JKL") [text 3] [text 4]
我尝试了以下内容:
preg_match_all('/highlight.*/', $text, $matches);
print_r($matches);
但我明白了:
Array
(
[0] => Array
(
[0] => highlight("ABC DEF") [text 2] highlight("GHI JKL") [text 3] [text 4]
)
)
但这不是我想要的,因为它们在一起。
我也尝试过:
preg_match_all('/highlight/', $text, $matches);
print_r($matches);
但我明白了:
Array
(
[0] => Array
(
[0] => highlight
[1] => highlight
)
)
那不是我想要的。
知道使用regexp
来获取我提到的groups
above
吗?
答案 0 :(得分:3)
<?php
$matches = array();
preg_match_all("/highlight\([^)]*\) .*?(?= highlight|$)/", '[text 1] highlight("ABC DEF") [text 2] highlight("GHI JKL") [text 3] [text 4]', $matches);
var_dump($matches);
解释:
答案 1 :(得分:0)
使preg_split?
preg_split("/(highlight)/", $input_line);
在此处试试:http://www.phpliveregex.com/p/hYr
使用PREG_SPLIT_DELIM_CAPTURE选项,它将在字符串中保持突出显示