无需为此使用后视断言。由于您从字符串的开头开始查找,因此您可以使用先行查找和后备查找来完成所有操作。这应该工作:
^((?!.part(?!0*1.rar$)d+.rar$).)*.(?:rar|r?0*1)$
要按照您的要求捕获文件名的第一部分,可以执行以下操作:
^((?:(?!.partd+.rar$).)*).(?:(?:part0*1.)?rar|r?0*1)$

无需为此使用后视断言。由于您从字符串的开头开始查找,因此您可以使用先行查找和后备查找来完成所有操作。这应该工作:
^((?!.part(?!0*1.rar$)d+.rar$).)*.(?:rar|r?0*1)$
要按照您的要求捕获文件名的第一部分,可以执行以下操作:
^((?:(?!.partd+.rar$).)*).(?:(?:part0*1.)?rar|r?0*1)$