2010-11-21 113 views
2

我試圖用正則表達式在字符串變量中找到搜索詞的一部分。C#正則表達式需要幫助

這裏是字符串變量內容:

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

[,], '',和。總是在那裏,但不是Key =,Object和Text。 (可以不同)。我想確定像之間的部分「和」「o_Module.Id」

我只想拿「和」

你能幫我確定我需要的模式的一部分?

例:

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

? =我不知道這個值可以是

[?[??'o_Module。?]。?? ]

+0

你可以給應匹配的字符串和字符串不應該的一些例子嗎? – Jan 2010-11-21 17:50:04

+2

從'''的第一個索引子串然後是子串到'''的下一個索引是不夠的? – BalusC 2010-11-21 17:58:33

+0

是的,這可能是可能的,但與正則表達式我也有效,如果字符串是在正確的格式 – 2010-11-21 18:03:13

回答

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

是我需要!謝謝!! – 2010-11-21 18:16:14

+0

但是請在大量樣本字符串上測試它,看看它是否真的有助於驗證格式,否則爲@Ed建議您只需取主題字符串的子字符串 – TheVillageIdiot 2010-11-21 18:17:36

+0

如果使用正則表達式確保數據的結構正確,上面的表達式不會捕獲具有錯誤引號或括號的數據,例如:[Object [Key ='o_Module.Id.Text']或[Object [Key ='o_Module.Id]。文字'] – C8H10N4O2 2010-11-21 18:40:17

3

如果單引號總是以上面顯示的形式出現,爲什麼不只是查找'使用SubString的第一個索引?從我在你的描述中看到的使用正則表達式在這裏是矯枉過正的。

0

我認爲這通常應該這樣做,假設有永遠只一組單引號:

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值將位於第一個捕獲組中。