求正则表达式~~~ 匹配中间内容
例子【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#