正如我在你的问题发表评论时提及,如果你的字符串的全部是
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