2016-06-24 11 views
-1

今日はRegexを学び、素早く表現しました。単語が文字列の最後にあるかどうかを確認するにはどうすればよいですか?

([\s]+\(?fe?a?t(?:uring)?\.?[\s]*) 

これは、曲名の「フィーチャー」部分と一致します。

アーティスト - タイトルフィート2ndArtist

または

アーティスト - - タイトル偉業2ndArtist

または

アーティストをフィーチャーしたタイトル。私は風邪偉業に

を持っている -

アーティスト:2ndArtist

は、私はそれのようなファイル名を一致止めるために私の式に何を追加することができますか?

+1

これはすでに何度も回答されていますが、明らかに文書で提供されていますが、誰かが即座にコピー貼り付けの準備ができました。 –

+0

正規表現の最後に '(?!$)'を追加してください。 – 4castle

+0

ありがとう4castleありがとう、空白をキャプチャしないようにこれをどのように拡張するのですか? – Trontor

答えて

0

私はその目的のためにString.EndsWithメソッドを使用する方がよいでしょう。そして、あなたはすべての空白を削除するためにTrim()メソッドを使用することができます。

bool result = myString.Trim().EndsWith(”Artist”); 
+0

「Artist」、「Title」、「2ndArtist」は単なるプレースホルダです。実際の名前はあらかじめわかっていません。 OPは、もしあれば、追加のアーティスト名を見つけるために、「フィーチャー」(または略語の略語)という単語を使用している。 –

0

あなたは、行の末尾に「アンカー」あなたのパターンができますが、ワイルドカードは以下のように一致する*アンカーの前に使用して注意する必要があります。

これを見るもう1つの方法は、真ん中に「フィーチャー」することです。だから、文字、単一のスペース、 'フィーチャー'、単一のスペース、いくつかの文字。だから私はこのように私の正規表現を構築します:

3部に分かれて試合を与える
var pattern = @"(.*) (ft\.?|feat\.?|featuring) (.*)"; 

、または唯一の全試合のために:文字列は必要性を回避する前に

var pattern = @"(.* (?:ft\.?|feat\.?|featuring) .*)"; 

は@に注意してください。バックスラッシュをエスケープする。

関連する問題