正如我在对您的问题的评论中提到的,如果您的整个字符串是
prefix::key0==value0::key1==value1::key2==value2::key3==value3::key4==value4::
我建议在 :: 处分解/拆分字符串,而不是使用正则表达式,因为它通常总是更快。您没有指定语言,但这是一个 php 示例:
// string
$string = "prefix::key0==value0::key1==value1::key2==value2::key3==value3::key4==value4::";
// explode using :: as delimiter
$string = explode('::',$string);
// for each element...
foreach ($string as $value) {
// check if it has == in it
if (strpos($value,'==')!==false) $matches[] = $value;
}
// output
echo "<pre>";print_r($matches);
输出:
Array
(
[0] => key0==value0
[1] => key1==value1
[2] => key2==value2
[3] => key3==value3
[4] => key4==value4
)
但是,如果您坚持使用正则表达式方法,则此处为负前瞻替代方案
::((?:(?!::).)+)
php 示例
// string
$string = "prefix::key0==value0::key1==value1::key2==value2::key3==value3::key4==value4::";
preg_match_all('~::((?:(?!::).)+)~',$string,$matches);
//output
echo "<pre>";print_r($matches);
输出
Array
(
[0] => key0==value0
[1] => key1==value1
[2] => key2==value2
[3] => key3==value3
[4] => key4==value4
)