正如我在你的問題發表評論時提及,如果你的字符串的全部是
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
)
不知道你正在使用,但例如瓦特/ PHP的,任何原因,你不能只用「::」作爲分隔符,而不是爆炸()用什麼語言? – 2011-03-24 17:57:29