2010-11-21 170 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值将位于第一个捕获组中。