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

thisfeelnotgood 2013-03-27 07:52:22
例子


【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...不懂
...全文
229 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2013-03-27
  • 打赏
  • 举报
回复
//递归方法
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】
说了那么多,还不知道你究竟想怎么用,只能是全部取出来了

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧