特定字符串的C#正则表达式模式匹配

特定字符串的C#正则表达式模式匹配,c#,regex,matching,C#,Regex,Matching,尝试对特定模式进行正则表达式匹配和替换以重命名文件。不幸的是,我不太善于使用正则表达式,如果您能提供任何帮助,我将不胜感激 我要替换的模式是 (Conflicted copy * ) 为了解释,我需要替换(冲突副本*)基本上匹配单词“(冲突副本”模式的所有内容,以及这些单词和右括号之间的任何内容 例如.Book1(在这里复制一些垃圾) 收件人:Book1.xls 我会用什么正则表达式来代替它 我尝试了以下方法:pattern=“\([^\(]*\)” 不幸的是,这不起作用,因为有些路径中有(

尝试对特定模式进行正则表达式匹配和替换以重命名文件。不幸的是,我不太善于使用正则表达式,如果您能提供任何帮助,我将不胜感激

我要替换的模式是

(Conflicted copy * ) 
为了解释,我需要替换(冲突副本*)基本上匹配单词“(冲突副本”模式的所有内容,以及这些单词和右括号之间的任何内容

例如.Book1(在这里复制一些垃圾) 收件人:Book1.xls

我会用什么正则表达式来代替它

我尝试了以下方法:pattern=“\([^\(]*\)”

不幸的是,这不起作用,因为有些路径中有()

(即,C:\Some crap\1.(stuff)\book1(冲突复制垃圾文件).xls)

它将失败并将文件重命名为:

(C:\Some crap\1。\book1.xls)->然后出错,因为该路径不存在


非常感谢您的帮助。

由于获得文件扩展名非常容易,您可以使用此正则表达式仅提取文件名:

[^\\]*(?=\s\(冲突副本)

然后附加原始文件扩展名

这可以通过使用正向前瞻避免使用正则表达式组

解释

[^\\]*
匹配除
\
以外的任何内容(以排除文件路径)

(?=\s\(冲突副本)
后跟空格和(冲突副本)

使用组的其他解决方案

以下正则表达式将提取不带文件名(冲突副本…)和文件扩展名的文件名:

([^\\]*)(?=\s\(冲突副本)。*?\)(\..*)$

第1组:文件名

第2组:文件扩展名


将“冲突副本”添加到regexp中,使其仅匹配that@SamiKuhmonen-感谢您的回复。我会的,但我不知道确切的添加位置。再次,我不熟悉正则表达式。
\(冲突副本[^]*\)
可能会起作用。更新答案以排除文件路径