将regex模式从php转换为C#

时间:2018-08-31 16:42:07

标签: c# php .net regex

我有这个正则表达式模式(为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,,",])内也要用逗号分隔

0 个答案:

没有答案