2012-02-09 11 views
1

私は、文字列を持っていると私は価値のためにそれを解析する必要があります...正規表現を説明するには、どのようにしてregExを使ってこの文字列から値を取得できますか?

var msg = "Sometext can't do this. Blah blah blah Version id: 'xxx'"; 

どのように私は正規表現を使用して、最後の2つの単一引用符の間のテキストを得ることができますか? xxx 最初の一重引用符が{can not}であることを確認してください 私が探している値は、常に一重引用符で最後のセットの間になります。 正規表現の簡単な説明も素晴らしいでしょう。

ご協力ありがとうございました。

+0

に一致していますか?最後の2つは? ":"の後のもの? – m0skit0

+0

ルールを最初に定義する必要があります - 指定された文字列で検索する必要があり、それを見つける方法。 –

+0

はい...このインスタンスで探している値は、常にソース文字列の最後の2つの一重引用符の間になります。 – Hcabnettek

答えて

3

これは、私が使用し、最終的な正規表現

(?<=')[^']*(?='$) 

一般的なパターンは、それが接頭辞と接尾辞の間にあるパターンを見つけ

(?<=prefix)find(?=suffix) 

です。私たちが知りたいことは

[^']* 

これは何もなく、単一引用符(')が0回以上の繰り返しを意味しています。

最後に'だけでなく、最後に'$を探します。これは、一重引用符が行末になければならないことを意味します。その特定のstring ...

@"'\w+'" 

2

あなたはワット\、理解することは、この

'\w*' 

は、そのシンプルな試すことができますが - それは繰り返し、任意の数のために見える*、英数字を探し、その単一引用符で囲まれた英数字のanynumberを探していること一重引用符で囲まれた文字。

0

... "'xxx'"と一致しますが、あなたはstringは常に"Version id: 'xxx'"で終わることを知っているとあなたが単一で囲まれていてもよい他のテキストを考慮してほしい場合引用符は、あなたは... ...

@"Version id: '(?<versionId>\w+)'$" 

をこれを使用...そしてこれでバージョンIDを取得することができ

Match match = Regex.Match(msg, @"Version id: '(?<versionId>\w+)'$"); 

if (match.Success) 
{ 
    string versionId = match.Groups["versionId"].Value; 

    // Perform further processing on versionId... 
} 

正規表現は次のようにブレークダウン:"Version id: '"

  • (?<versionId>\w+)はあなたがすることができますaccess by name"versionId"
  • \w+グループ= word character(文字のOne or more occurrences、桁=

    • Version id: ' =リテラルテキスト、および句読点)。 decimal digitsとのみ一致する場合は、代わりに\d+を使用してください。
    • ' =リテラルテキスト"'"
    • $ =アンカー使用すると、2つの単一引用符が正しいものであるかを知っているだろうどのようにend of the line or string