2009-05-26 14 views
2

最後の ':'とそれ以降のすべてを取得する正規表現を作成しようとしています。これはC#での私の正規表現です:文字列中の最後のコロンとその後ろのすべてを取得する正規表現

Regex rx5 = new Regex(@"[A-Za-z.][^\s][^:]{1,}$",RegexOptions.Singleline); 

それには ':'が含まれています。 ':'を除いて ':'の後にすべてを取得するにはどうすればよいですか?最初のマッチグループは、最後の:後に残りの部分を含みます

^(?:[^:]*:)+([^:]*)$ 

+0

':([^:] *)$'は適切なパターンですが、将来はhttp://regexr.comがあなたの友人です。 –

答えて

2

私はこの正規表現を使用します。

1

グループを使用して、あなたもシンプルなものに正規表現を書き換えることもできます(正規表現を使用していないことで

Match ma = rx5.Match("test:1:2:3"); 
if (ma.Success) 
{ 
    // your content is in ma.Groups[1].Value 
} 
11

が、String.LastIndexOfとサブストリング:

Regex rx5 = new Regex(":([^:]*)$",RegexOptions.Singleline); 

は、次に、あなたが持っています)

1

それとも、ただ次のパターンを使用できます。

Regex rx5 = new Regex("[^:]+)$",RegexOptions.Singleline); 
+0

+1ですが、無駄なSingleline修飾子を削除します。実際、他の回答のいずれにも属していません。 –

+0

式: '" [^:] +)$ "'は無効な構文です(一致しない括弧)。さらに、(一度固定されると)この式は、コロンをまったく持たない文字列と誤って一致します。 – ridgerunner

1

最後を含まないように後読みを使用する ":"

Regex rx5 = new Regex("(?<=:)([^:]*)$",RegexOptions.Singleline); 
2

をあなたはstr.Substring(str.LastIndexOf( ':')+ 1)をやったほうが良いです。

正規表現は強力ですが、より簡単な方法がある場合は使用しないでください。

関連する問題