zoukankan      html  css  js  c++  java
  • Sizzle.js分析

    注:分析的是Sizzle.js最新版本(截至2011-12-21)

    1. chunker那段表达式:

    var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g

     先可以分为3大段:

     ((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~]) (*1)

     (\s*,\s*)? (*2)

     ((?:.|\r|\n)*) (*3)

     其中,第(*2)部分为逗号和空格组成的分隔符,用于切分需要匹配的字符串。

     第一部分可以继续细分为:

    (

    (?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+ (*1.1)

    |

    [>+~] (*1.2)

      )

     其中,(*1.2)为Sizzle关系选择符集合。 对(*1.1)继续拆分:

     (

    ?:

    \((?:\([^()]+\)|[^()]+)+\) (*1.1.1)

    |

    \[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\] (*1.1.2)

    |

    \\. (*1.1.3)

    |

    [^ >+~,(\[\\]+ (*1.1.4)

    )+

    对得到的4个单元依次分析:

    (*1.1.1)还可以拆分:

    \((

    ?:

    \([^()]+\)

    |

    [^()]+

    )+\)

    作用?

    (*1.1.2)还可以拆分:

    \[(

    ?:

    \[[^\[\]]*\]

    |

    ['"][^'"]*['"]

    |

    [^\[\]'"]+

    )+\]

  • 相关阅读:
    JMM、asifserial语义、happensbefore模型
    jvm内存溢出实践
    垃圾回收和GC算法
    jvm运行时数据区域
    实现加锁的消费者和生产者模型
    jvm监控工具小结
    HotSpot对象
    java常用垃圾收集器
    字面量, 符号引用与直接引用
    常用线程安全的队列
  • 原文地址:https://www.cnblogs.com/Langzi127/p/2295881.html
Copyright © 2011-2022 走看看