簡體   English   中英

特定字符串的C#正則表達式模式匹配

[英]C# Regex Pattern Match for specific string

嘗試進行正則表達式匹配並替換為特定模式以重命名文件。 不幸的是,我使用regex並不是很好,並且希望您能提供任何幫助。

我要替換的模式是。

(Conflicted copy * ) 

為了解釋,我需要替換(沖突副本*)基本上所有與單詞“(沖突副本”模式)匹配的內容,以及那些單詞與右括號之間的所有內容。

例如。 Book1(在此處將一些垃圾內容復制有沖突)到:Book1.xls

我將為此使用什么正則表達式? 取代?

我嘗試了以下方法:pattern =“ \\([^ \\(] * \\)”;

不幸的是,這不起作用,因為其中包含()的路徑。

(即C:\\ Some Crap \\ 1。(stuff)\\ book1(沖突的復制垃圾內容).xls)

它將失敗,並將文件重命名為:

(C:\\ Some Crap \\ 1. \\ book1.xls)->然后出現錯誤,因為該路徑不存在。

任何幫助將不勝感激謝謝你們。

由於很容易獲得文件擴展名,因此可以使用此正則表達式僅提取文件名:

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

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

這樣可以通過使用正向前瞻避免使用正則表達式組。

說明

[^\\\\]*匹配\\任何內容(以排除文件路徑)

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

演示

其他使用組的解決方案

以下正則表達式將提取不帶(沖突副本...)和文件擴展名的文件名:

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

組1:文件名

第2組:文件擴展名

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM