功能实现:一串字符:“result={A}&description={B}&faillist={C}”
除了{A}{B}{C}是变量 其他都是固定的。我现在 想要的是 匹配这串字符 并且将{A}{B}{C}取出来。能实现么?正则该怎么写。我是菜鸟 求指导!!!!
除了{A}{B}{C}是变量 其他都是固定的。我现在 想要的是 匹配这串字符 并且将{A}{B}{C}取出来。能实现么?正则该怎么写。我是菜鸟 求指导!!!!
解决方案 »
- 谁知道在程序里怎么创建Access的视图的吗,很冷门,过来碰运气
- 请教:XML文件中的图像字符串如何转成图像(有难度)
- 事件处理程序绑定的时候写处理逻辑?
- 如何把Word文件按原来的样式读取并显示在C#控件上
- 开发一个物流软件,不知如何着手,请各位帮忙,哪有介绍这方面的知识,大家推荐一下
- 如何从FullPath找到TreeView的selectedNode?
- 这段代友如何使用,最好有例子出来。
- AD中查找这个用户的其他相关信息
- 升级了,高兴,散分!!!
- 水晶报表分发的问题
- C# 中 winfrom 和 webForm 信息共享
- vs2010,winForm中如何设置dataGridView1和bindingNavigator1停靠方式
Regex reg_imgformorA = new Regex(
"[\\w\\W]*?result={([\\w\\W]*?)}");
MatchCollection mcpiformorlist = reg_imgformorA.Matches(stra);
if (mcpiformorlist.Count > 0)
{
string resulta = mcpiformorlist[0].Groups[1].Value;
}
Regex reg_imgformorB = new Regex(
"[\\w\\W]*?&description={([\\w\\W]*?)}");
MatchCollection mcpiformorB = reg_imgformorB.Matches(stra);
if (mcpiformorB.Count > 0)
{
string resultb = mcpiformorB[0].Groups[1].Value;
}
Regex reg_imgformorC = new Regex(
"[\\w\\W]*?&faillist={([\\w\\W]*?)}");
MatchCollection mcpiformorC = reg_imgformorC.Matches(stra);
if (mcpiformorC.Count > 0)
{
string resultb = mcpiformorC[0].Groups[1].Value;
}
最后这个resulta 。 resultb.resultc输出的是A B C
var ary = Regex.Matches(str, @"(\w*?)=([^$&\s]+)").Cast<Match>().Select(t => new { a = t.Groups[1].Value, value = t.Groups[2].Value }).ToArray();
foreach (var t in ary)
{
MessageBox.Show(t.a + ":" + t.value);
}
"[\\w\\W]*?result={([\\w\\W]*?)}");
改成 Regex reg_imgformorA = new Regex(
"[\\w\\W]*?result=([\\w\\W]*?)&");
string str = "result={A}&description={B}&faillist={C}";
MatchCollection ary = Regex.Matches(str, @"(?i)result=\{([^{}]*?)\}&description=\{([^{}]*?)\}&faillist=\{([^{}]*?)\}");
foreach (Match m in ary)
{
Console.WriteLine(m.Value);
Console.WriteLine(m.Groups[1].Value);
Console.WriteLine(m.Groups[2].Value);
Console.WriteLine(m.Groups[3].Value);
}
你好,我将你的正则表达式放在一起改造了下(因为不允许分开写)
"result={([\\w\\W]*?)}&description={([\\w\\W]*?)}&faillist={([\\w\\W]*?)}"前面两个能匹配出来 ,但是最后一个 不能出来值!是什么原因?
MatchCollection mcpiformorlist = reg_imgformorD.Matches(stra);
if (mcpiformorlist.Count > 0)
{
string resulta = mcpiformorlist[0].Groups[1].Value;
string resultb = mcpiformorlist[0].Groups[2].Value;
string resultc = mcpiformorlist[0].Groups[3].Value;
}
你好,“{}”也是要输出的。是整个替换掉。。比如
"result=1&description=返回出错&faillist=13656645185,14587485478"
最后一个“13656645185,14587485478”也没有出来
string str = "result=1&description=返回出错&faillist=13656645185,14587485478";
var ary = Regex.Matches(str, @"(\w*?)=([^$&\s]+)").Cast<Match>().Select(t => new { a = t.Groups[1].Value, value = t.Groups[2].Value }).ToArray();
foreach (var t in ary)
{
Console.WriteLine(t.a + ":" + t.value);
}
str =string.Join("\r\n", Regex.Replace(str, @"\w+=", "").Split('&'));
Console.WriteLine(str);
string test = "result=1&description=返回出错&faillist=13656645185,14587485478";
Regex reg = new Regex(@"result=([^&]*)&description=([^&]*)&faillist=([^&=]*)");
Match m = reg.Match(test);
if (m.Success)
{
richTextBox2.Text += "result:" + m.Groups[1].Value + "\n";
richTextBox2.Text += "description:" + m.Groups[2].Value + "\n";
richTextBox2.Text += "faillist:" + m.Groups[3].Value + "\n";
}
/*-----输出-----
result:1
description:返回出错
faillist:13656645185,14587485478
*/
然后 输出的是
string resulta = mcpiformorlist[0].Groups[1].Value;//1
string resultb = mcpiformorlist[0].Groups[2].Value;//错误描述
string resultc = mcpiformorlist[0].Groups[3].Value;//失败号码列表现在按你的 有{}是能出来的 但是 {}去掉之后 就不能显示了。能麻烦再解决下么 谢谢了!
就是要这个。谢谢了。但是现在有个问题是“result=1&description=错误描述”这种的 或者“result=1”这种的 要这三种都出现都能匹配 有可能吗?我感觉 应该用个 “|”符号 就好了 可是我试了下 有问题=,=能帮忙 解答下么?
Regex reg = new Regex(@"(?i)result=(?<result>[^&]*)(?:&description=(?<description>[^&]*))?(?:&faillist=(?<faillist>[^&=]*))?");
Match m = reg.Match(test);
if (m.Success)
{
richTextBox2.Text += "result:" + m.Groups["result"].Value + "\n";
richTextBox2.Text += "description:" + m.Groups["description"].Value + "\n";
richTextBox2.Text += "faillist:" + m.Groups["faillist"].Value + "\n";
}