我有这个正则表达式模式(为PHP编写):
(?:"(?:\\"|[^"])*"|)\K(,)
我需要在dotnet中使用它,但不支持\K
。我可以用其他方法产生相同的效果吗?
编辑:
此正则表达式是该方法的一部分:
private static function fix_json(string $json){
if(preg_match('/^\[(.+)\]$/s', $json, $matches) > 0){
$parts = preg_split('/(?:"(?:\\"|[^"])*"|)\K(,)/', $matches[1]); //Splits on commas not inside quotes, ignoring escaped quotes
foreach($parts as $k => $part){
$part = trim($part);
if($part === ""){
$part = "\"\"";
}
$parts[$k] = $part;
}
$fixed = "[" . implode(",", $parts) . "]";
return $fixed;
}
return $json;
}
此方法修复带有空项目的JSON列表。例如。从[null,,,]
到[null,"","",""]
。它也不应在字符串值(例如[null,"quote \"",]
)内用引号引起来,并且在逗号(例如[null,,"commas,,",]
)内也要用逗号分隔