{cc:sql sql="(.+?)"}.+?[field:(.+?)/].+? {/cc:sql}
凑合着用吧.
C#代码:
Regex regex = new Regex("{cc:sql sql=\"(.+?)\"}.+?[field:(.+?)/].+? {/cc:sql}");
if(regex.IsMatch(str)){
Match match = regex.Match(str);
string sql = match.Result("$1");
string field = match.Result("$2");
}
手写的,不知道能不能用.
[field:(.+?)/]里的[]是字符组的意思,只能单选,估计是手误,
改成
Regex regex = new Regex("{cc:sql sql=\"(.+?)\"}.+?(field:(.+?)/).+? {/cc:sql}");
之后测了一下发现还是不通,奇怪,居然是下面红色标记的空格的问题,不知道为什么
Regex regex = new Regex("{cc:sql sql=\"(.+?)\"}.+?(field:(.+?)/).+? {/cc:sql}");
再改:
方法一:
Regex regex = new Regex("{cc:sql[ ]sql=\"(.+?)\"}.+?(field:(.+?)/).+? {/cc:sql}");
方法二:
Regex regex = new Regex("{cc:sql\ssql=\"(.+?)\"}.+?(field:(.+?)/).+? {/cc:sql}");
那$2就得改成$3了。
如果我这个能解决你的问题,分还是给狼吧,我只是帮他测试了一下
当然不能用..... 点可不是天下无敌
string str="{cc:sql sql=\"Select * from dede_archives where mid=1\"} <a href=\'1.aspx\' target=\'_blank\'>[field:title/] </a> {/cc:sql}";
Match ma = Regex.Match(str,"\\{cc:sql sql=\"([\\w\\W]+?)\"\\}[\\w\\W]+?field:([\\w\\W]+?)/\\][\\w\\W]+?\\{/cc:sql\\}");
if (ma.Length>0)
{
string sql = ma.Groups[1].Value;
string field = ma.Groups[2].Value;
}
是要这个效果吗:
{cc:sql.+"(.+?)"}.+\[field:(.+?)\/\].+{\/cc:sql}
注意需要启用正则的“单行模式”选项,以使“.”匹配任意字符