随笔 - 114,  文章 - 0,  评论 - 0,  阅读 - 70373
例子:
复制代码
let reg = /(?:}\s*(\S+)\s*#)|(?:\s+(\S+)\s+)|(?:\s+(\S+)\s*#)|(?:}\s*(\S+)\s+)/g;
  let keyList = []
  let match = value.match(reg)
  if( match ){
    keyList = match.map((matchItem) => {
      let key
      
      matchItem.replace(reg, (res, $1, $2, $3, $4) => {
        key = $1 || $2 || $3 || $4
      })
      return key
    })
  }
  console.log("函数g4词法", keyList)
复制代码

 

1. 正则表达式使用 | 表示逻辑或

2. 使用 | 是,用 ( ),将正则分组

3. 使用 ?: 形成被动子表达式,忽略一组括号的捕获

4. 在匹配时,会对或者串上的捕获组全部捕获

5. 捕获的顺序是从前往后,从外向里捕获

\(}\s*(1\S+)\s*#)|(\s+(2\S+)\s+)\

// 捕获顺序为 }\s*(1\S+)\s*# 、1\S+ 、 \s+(2\S+)\s+ 、 2\S+


\(?:}\s*(1\S+)\s*#)|(?:\s+(2\S+)\s+)\

// 捕获顺序为 1\S+ 、 2\S+

 

posted on   occc  阅读(1505)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示