特定字符串的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-感谢您的回复。我会的,但我不知道确切的添加位置。再次,我不熟悉正则表达式。
\(冲突副本[^]*\)
可能会起作用。更新答案以排除文件路径