zoukankan      html  css  js  c++  java
  • 一个正则表达式看不懂了,求指教

    问题,这是我看的dtcms的模板引擎制作的内容,在csdn问的问题及解答

     //解析普通变量{}
                r[15] = new Regex(@"({([^[]/{}=:'s]+)})", options);
    就是这个({([^[]/{}=:'s]+)}),小括号表示分组吧,小括号里又套了个大括号什么意思,大括号如果里面有数值,比如{3},我知道重复3次,除非{},表示{}原样输出匹配,可以大括号里又套了个小括号(),小括号里表示转义吧,我看应该匹配除了[]/{}=:'以及一个以上空白,除了上面的那些符号外其他都匹配,
    match遍历符合条件的内容,最后match.Groups[0].ToString()
    匹配了个{model.title},这是怎么回事啊,外边的大括号怎么匹配的啊

    match.Groups[0]是 输出匹配到的整个字符串 比如: {model.title},(//我的补充,这里更明白一点,我的项目比如r[0] = new Regex(@"<%template src=/([^[]{}s]+)/%>", options);,groups[0],就是整个(@"<%template src=/([^[]{}s]+)/%>“,而groups[1]是小括号的内容即[^[]{}s]+)/%)

    match.Groups[1]: 是外边的小括号内的值: {model.title}

    match.Groups[2]: 是里边的小括号内的值: model.title

    你的正则,外边的小括号是没必要的

    整个正则的意思是:  匹配这样的字符: 外边是{},里边是非[]{}=:'空格的字符 

    恕我不能理解你看完这篇文章还来发贴的理由,这些都是最最基本的好吗、、、
    言归正传,我们来讨论下这个pattern是来匹配什么类型的。
    [ 匹配字符[
    ] 匹配字符]
    / 匹配字符/
    { 匹配字符{
    } 匹配字符}
    = 匹配字符=
    : 匹配字符:
    ' 匹配字符'
    s 匹配任意的空白符
    [^aeiou]匹配除了aeiou这几个字母以外的任意字符
    +  重复一次或更多次
    [^[]/{}=:'s]+   匹配长度至少为1的符合这个[^[]/{}=:'s]要求的字符串
    (exp) 匹配exp,并捕获文本到自动命名的组里
    ([^[]/{}=:'s]+) 匹配[^[]/{}=:'s]+,并捕获文本到自动命名的组里
    比如string为 1qww fsf{dfla}fl=d 
    那么匹配结果为5个分组,分别为1qww fsf dfla fl d
     
    {}在这里并没有什么特别的意义。就是两个字符而已。
    (exp) 匹配exp,并捕获文本到自动命名的组里
    ({([^[]/{}=:'s]+)})
    比如string为 1qww fsf{dfla}fl=d 
    那么匹配结果为1个分组,为 dfla

    这样分析,你看懂了么?

    TZ,你说了一大串,但是显然,你想多了

    首先,来说一下这个正则所匹配的:
    匹配以{开头以}结尾的字符串,中间必须有1个或1个以上的字符,并且字符不能为以下任意一个值:
     [ ] / { } = : 空白

    也就是匹配这种字符串: {abc123}
    其次,说一下里面的分组:
    $1 是整个匹配的分组,也就是{abc123}
    $2 是花括号内的分组,也就是abc123

    好像有点明白了,也就是({()}),小括号里的匹配内容为{},这是分组0匹配,如果这个大括号里又有小括号,那么又是一组,也就是()里的内容匹配分组1是吧,,如果大括号里没有小括号,那么只有一组,那就是匹配{}里的内容是吧

    其实,就是小括号里匹配一个分组1,如果分组里还有小括号,那就是分组2

  • 相关阅读:
    C# 数据处理——(包括但不限)浮点数设置小数点后位数 (转)
    c#下怎么判断一个字符串是否可以转换为double类型(转)
    C++ string字符串按分隔符分割成一个数组(转)
    C#浮点数保留位(转)
    linq与lambda写法对照(转)
    C# DataTable 和List之间相互转换的方法(转)
    c#写入Mysql中文显示乱码 解决方法(转)
    微博营销之企业微博运营方案实用篇
    “最美店主”走红网络,或成国内欧美第一店
    月饼西施PK愤怒的小鸟,这个中秋狂掀DIY风
  • 原文地址:https://www.cnblogs.com/wanshutao/p/3570982.html
Copyright © 2011-2022 走看看