2010-11-21 16 views
2

文字列変数の検索語の一部を正規表現で検索しようとしています。 ''、[、]C#正規表現でヘルプが必要

string s_Var = "[ Object[Key='o_Module.Id'].Text ]" 

、および:ここでは

は、文字列変数の内容です。常に存在しますが、Key =、Object、Textはありません。 (異なる可能性があります)。私は間の部分を決定したい「と」「o_Module.Id」

ように私は「と」

の間の部分を取りたいあなたは私が必要とするパターンを決定するために私を助けることができますか?

Exemple:

string s_Original_Text = "[ Object[Key='o_Module.Id'].Text ]" 

? =私は価値があることがわかりません

[?[?? 'o_Module?]。 ]

+0

あなたが一致している必要があります文字列といけない文字列のいくつかの例を与えることはできますか? – Jan

+2

'' 'の最初のインデックスから部分文字列を引いて、' ''の次のインデックスに部分文字列を付けるだけでは十分ではありませんか? – BalusC

+0

はい、それは可能かもしれませんが、文字列が正しい書式であれば正規表現でも有効です –

答えて

1

は、このコードを試してみてください。

var s = "[['o_Module.Id'].Text]"; 
//"[Object[Key='o_Module.Id'].Text]"; //ALSO MATCHES THIS 
var r = new System.Text.RegularExpressions.Regex(@"(\[?.*\[?')(.*)('.*)"); 
var m = r.Match(s); 
if (m.Success) 
{ 
    //0 contains whole string 
    Console.WriteLine(m.Groups[2].Value); //Prints o_Module.Id 
} 
+0

!! –

+0

しかし、多くのサンプル文字列でそれをテストして、フォーマットの検証に本当に役立つかどうかを確認してください。@Edは、件名文字列の部分文字列を取ることができると示唆しています。 – TheVillageIdiot

+0

正規表現を使用する場合は注意してください。上記の式は、[Object [Key = 'o_Module.Id.Text']や[Object [Key = 'o_Module.Id]などの間違った引用符や角括弧を含むデータをキャッチしません。テキスト '] – C8H10N4O2

3

上記のフォームに一重引用符が常に含まれている場合、最初のインデックスで「Using SubString?ここで正規表現を使用しているあなたの記述に見られるものは、残酷です。

0

私は単一引用符のしかセットが1つだと仮定すると、これは通常、それを行う必要があることだと思う:あなたはそのオプションのものを追加したい場合は

System.Text.RegularExpressions.Match result = System.Text.RegularExpressions.Regex.Match("[ Object[Key='o_Module.Id'].Text ]", "'([^']*)'"); 

は:

result = System.Text.RegularExpressions.Regex.Match("[ Object[Key='o_Module.Id'].Text ]", @"\[ (?:Object)?\[(?:Key=)?'([^']*)'\]\.(?:Text)? \]"); 
0
\[[^']*?'([^']+) 

o_Module.idの値は、最初の取得グルー​​プになります。