当前位置:编程学习 > C#/ASP.NET >>

求正则表达式~~~ 匹配中间内容

例子


【Get=【变量1】/code.php?rand=【Rand=10,500】】

想根据不同的标签执行不同的程序, 如上例子中

假设 Get 对应的程序是一个Httphelper 功能是一个Get请求。 

变量 1对应的是一个变量  即URL地址 

Rand  对应的是一个随机数生产程序  调用即生产一个随机数

那么我想正常使用这个Httphelper去请求 必须要先把里面的标签2 标签3 先给执行 

我的思路是用正则匹配【】之间的内容 在判断字符串 根据不同的字符串去调用不同的程序

问题来了  正则匹配之间的内容  有可能会把内容匹配成为:

【Get=【变量1】

【Rand=10,500】】

这显然不是我想要的结果  于是乎 

1.
我先取第一个【 和最后一个】

【Get=【变量1】/code.php?rand=【Rand=10,500】】

得到的结果

Get=【变量1】/code.php?rand=【Rand=10,500】

如果再接着往下走的话   结果可能又变成了这样 

【变量1】/code.php?rand=【Rand=10,500】

2...不懂 --------------------编程问答--------------------
//递归方法
private void getNesting(string src, Regex reg, List<string> list)
{
    MatchCollection mc = reg.Matches(src);
    foreach (Match m in mc)
    {
        list.Add(m.Value);
        src = m.Value.Remove(m.Value.Length - 1, 1);
        if (reg.IsMatch(src))
        {
            getNesting(src, reg, list);
        }
    }
}
//调用
string test = "【Get=【变量1】/code.php?rand=【Rand=10,500】】";
List<string> list = new List<string>();
Regex reg = new Regex(@"(?i)【(?>[^【】]+|【(?<o>)|】(?<-o>))*(?(o)(?!))】", RegexOptions.Compiled);
getNesting(test, reg, list);
foreach (string s in list)
{
    richTextBox2.Text += s + "\n";
}
//输出
【Get=【变量1】/code.php?rand=【Rand=10,500】】
【变量1】
【Rand=10,500】


说了那么多,还不知道你究竟想怎么用,只能是全部取出来了 --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,