zoukankan      html  css  js  c++  java
  • vue.js 源代码学习笔记 ----- text-parse.js

    /* @flow */
    
    import { cached } from 'shared/util'
    import { parseFilters } from './filter-parser'
    
    //找到{{abc}}这样的 const defaultTagRE
    = /{{((?:.| )+?)}}/g //.+的意义是最小匹配, 找到符合的马上结束
    //正则的元字符 ^ $ . * + ? = ! : | / ( ) [ ] { }
    const regexEscapeRE
    = /[-.*+?^${}()|[]/\]/g

    //这个函数创建用户自定义模板符号, 比如传入 [ "[[", "]]" ], 模板就可以写成 [[abc.reverse()]] const buildRegex = cached(delimiters => { const open = delimiters[0].replace(regexEscapeRE, '\$&') //$&代表这个匹配项, 这里元字符使用\转义, 保证安全 const close = delimiters[1].replace(regexEscapeRE, '\$&') return new RegExp(open + '((?:.|\n)+?)' + close, 'g') //格式跟 defaultTagRe类似 })
    export
    function parseText ( text: string, delimiters?: [string, string] ): string | void {
     //拿到最终的模板正则  const tagRE
    = delimiters ? buildRegex(delimiters) : defaultTagRE
    if (!tagRE.test(text)) { return }
    const tokens
    = [] let lastIndex = tagRE.lastIndex = 0 let match, index
    while ((match = tagRE.exec(text))) { index = match.index // push text token if (index > lastIndex) { tokens.push(JSON.stringify(text.slice(lastIndex, index))) } // tag token const exp = parseFilters(match[1].trim()) tokens.push(`_s(${exp})`) lastIndex = index + match[0].length } if (lastIndex < text.length) { tokens.push(JSON.stringify(text.slice(lastIndex))) } return tokens.join('+') }
  • 相关阅读:
    NER(HMM实现)
    embedding(keras,word2vec)
    Word2Vec
    nlp文本转化方式小结
    文本向量化(欧氏距离,哈夫曼距离,L1,L2,TF-IDF)
    文件读取与保存(nlp,json)
    python调用大漠插件教程05字库
    Linux重定向与管道
    Linux文件句柄数调整
    HDFS命令实现分析
  • 原文地址:https://www.cnblogs.com/dhsz/p/7245835.html
Copyright © 2011-2022 走看看