例子:
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 2023-02-15 17:35  occc  阅读(1428)  评论(0编辑  收藏  举报