C#正则表达式需要帮助

时间:2010-11-21 17:44:14

标签: c# regex web-applications

我尝试在带有正则表达式的字符串变量中找到搜索词的一部分。

这是字符串变量内容:

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。?]。? ]

4 个答案:

答案 0 :(得分:3)

如果单引号始终以您在上面显示的形式出现,为什么不只是查找'使用SubString的第一个索引?从我在你的描述中使用正则表达式看到的内容是过度的。

答案 1 :(得分: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
}

答案 2 :(得分: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)? \]");

答案 3 :(得分:0)

\[[^']*?'([^']+)

o_Module.id值将位于第一个捕获组中。