正则表达式中的括号单位返回额外的匹配项

parenthetical units in regex returning extra matches

本文关键字:单位 正则表达式 返回      更新时间:2023-09-26

我是正则表达式的新手,一直在努力解决一个问题,并将我的问题抽象为以下问题:

var foo = "abc";
var array1 = match(/abc/);
var array2 = match(/a(b)c/);
Array1 当然只包含 "abc"

,但 array2 将同时包含 "abc" 和 "b"。
为什么 array2 也会拾取"b"? 这对我来说是一个问题,因为我将大括号内的某些内容(如"{1 2a 3}")与 /'{('d(|a|b)'s?)+'}/ 这样的正则表达式匹配,结果数组返回空字符串和"3"以及所需的"{1 2a 3}"。

谢谢!
艾萨克

使用 (?:) 而不是 ()

/{(?:'d(|a|b)'s?)+}/

使用 () 时,match也返回匹配的组。组是字符串的一部分,对应于正则表达式的各个部分,正则表达式在()中。