2011-09-09 3 views
1

私は簡単な問題を扱っています。ファイル名に一致する正規表現

フォルダに2つのファイルが残っているCognosレポートがあります。その後、ファイル名に応じてファイルの1つを取得する必要があります。

レポートプロセスでは、レポートに名前を設定するように求められます。例えば、私は名前PaymentJournal06.09を選択した場合、それはこれらのファイルを作成します。

PaymentJournal 06.09-en-us-xml_desc.xml 
PaymentJournal 06.09-en-us.xml 

私は第二のファイルをピックアップする正規表現を必要としています。 PaymentJournal*-en-us.xmlで試しましたが、うまくいきません。

答えて

4

あなたは非常に近いです。 .は、任意の1文字に一致する正規表現の特殊文字です。したがって、*ワイルドカードがあった場所では、代わりに.*または.+が必要です。最初の文字は0以上の任意の文字と一致し、2番目の文字は1以上の文字と一致しますが、どちらもこの場合に有効です。実際に.に一致させたいので、使用した.\.のようにエスケープする必要があります。すべてをまとめる:

PaymentJournal.*-en-us\.xml

+0

これは完璧に動作します、ありがとう! – Gerardo

6

正規表現では*はあなたのようにワイルドカードではなく、ゼロ以上の数量子です。だからあなたの例では:あなたが使用する必要が

PaymentJourna-en-us.xml 
PaymentJournal-en-us.xml 
PaymentJournall-en-us.xml 
PaymentJournallll-en-us.xml 
... 

PaymentJournal*-en-us.xml 

l*は一致し、ゼロ以上l文字を意味します。何も一致する文字:

PaymentJournal.*-en-us.xml 

それとも、より具体的な可能性があり:(。)

\dは番号と一致して \.期間と一致する
PaymentJournal \d\d\.\d\d-en-us.xml 

+0

実際には。あなたはそれを簡単にそれらをサポートするために使用している場合は、文字列の先頭と文字列の終わりの文字を正規表現に追加することもできます。 – bdeniker

+0

これは完璧に動作します、ありがとう! – Gerardo

関連する問題