2017-05-14 3 views
1

ファイルの名前を変更するために正規表現マッチを行い、特定のパターンに置き換えようとしています。残念ながら、私は正規表現を使ってあまりよくありませんし、あなたが提供できる任意のヘルプに感謝します。特定の文字列のC#Regex Pattern Match

私は置き換えて見ているパターンです。基本的に私は(*競合のコピー)を交換する必要が説明するの

(Conflicted copy *) 

言葉それらの単語と終了括弧の間「(競合コピー」パターンとは何も一致するすべてのもの。

ので、例えば。BOOK1(矛盾コピーここではいくつかのジャンク).XLS :??Book1.xlsという

私は交換するには、そのためにどのような正規表現を使用することになり

私は次のことを試してみた:パターン=「\([^ \(] * \) ";

残念ながら、()があるパスがあるため、残念ながらそれは機能しません。

(すなわち、C:\ 1 \いくつかのがらくた(もの)\ BOOK1(競合がジャンクのものをコピー).XLS):

(C:それは失敗とするファイルの名前を変更します

\いくつかのcrap \ 1. \ book1.xls) - >そのパスが存在しないためにエラーが出る。

ご協力いただきありがとうございます。それは、ファイルの拡張子を取得するのは非常に簡単だとして

+0

それが唯一のことと一致するように正規表現の中に、 "競合コピー" を追加します。 –

+0

@SamKuhmonen - 返信いただきありがとうございます。私はそれを追加する場所を正確にはわかりませんが、正規表現についてはあまり知られていません。 – Valmorgal

+1

'\(競合するコピー[^)] * \)'おそらく動作します。 –

答えて

2

、あなたはファイル名のみを抽出するために、この正規表現を使用することができます。

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

は、元のファイルの拡張子を追加します。

これは、正の先読みを使用して正規表現グループを使用しないようにします。

説明

が、[^\\]*マッチ何\

空白が続く(?=\s\(Conflicted copy)(競合が

Demo

その他solutiをコピー(ファイルパスを除外する)グループを使用している場合

次の正規表現は、(Conflicted copy ...)とファイル拡張子:

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

グループ1:ファイル名

グループ2:ファイル拡張子

Demo

+0

ファイルパスを除外するように更新されました –

+0

@valmorgalはうまくいきましたか? –

関連する問題