首页 新闻 赞助 找找看

正则匹配问题,那位大哥回答一下

0
悬赏园豆:60 [已关闭问题]

{cc:sql sql="Select * from dede_archives where mid=1"}
<a href='1.aspx' target='_blank'>[field:title/] </a>
{/cc:sql}

1:通过{cc:sql....{/cc:sql}匹配Select * from dede_archives where mid=1这句话出来
2:匹配[field:title]  中的title出来

请问正则要怎么写呢?

牛啊牛的主页 牛啊牛 | 初学一级 | 园豆:16
提问于:2009-05-25 15:40
< >
分享
其他回答(3)
0

{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");

}

手写的,不知道能不能用.

I,Robot | 园豆:9783 (大侠五级) | 2009-05-25 17:32
0

狼Robot

[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了。

如果我这个能解决你的问题,分还是给狼吧,我只是帮他测试了一下


HA-LOU | 园豆:192 (初学一级) | 2009-05-25 22:42
0

当然不能用.....    点可不是天下无敌

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;

        }

無尽海 | 园豆:540 (小虾三级) | 2009-05-26 01:18
0

是要这个效果吗:

{cc:sql.+"(.+?)"}.+\[field:(.+?)\/\].+{\/cc:sql}

注意需要启用正则的“单行模式”选项,以使“.”匹配任意字符

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-05-26 07:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册