特定字符串

时间:2017-05-14 17:21:18

标签: c# regex matching

尝试进行正则表达式匹配并替换特定模式以重命名文件。不幸的是,我使用正则表达式并不是很好,并且非常感谢您提供的任何帮助。

我想要替换的模式是。

(Conflicted copy * ) 

要解释我需要替换(冲突副本*)基本上所有匹配单词"(冲突副本"模式以及这些单词和结束括号之间的任何内容。)

例如,

。 Book1(冲突复制一些垃圾).xls to:Book1.xls

我会使用什么正则表达式?要替换?

我尝试过以下方法:pattern =" \([^ \(] * \)";

不幸的是,由于路径中包含(),因此无法正常工作。

(即C:\一些废话\ 1.(东西)\ book1(冲突的复制垃圾东西).xls)

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

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

非常感谢任何帮助,谢谢你们。

1 个答案:

答案 0 :(得分:2)

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

[^\\]*(?=\s\(Conflicted copy)

然后附加原始文件扩展名。

通过使用正向前瞻来避免使用正则表达式组。

<强>解释

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

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

Demo

使用群组的其他解决方案

以下正则表达式将在不使用(冲突副本...)和文件扩展名的情况下提取文件名:

([^\\]*)(?=\s\(Conflicted copy).*?\)(\..*)$

第1组:文件名

第2组:文件扩展名

Demo