質問に
const regex = /aaa(*)/g;
とありよって、正規表現にg フラグがあるゆうことは、aaa(b1d2)みたいな aaaのやつは、 paragraph ん中に複数出てくることがあって、それらの全部について、丸カッコの中だけ取ってきたいゆう話やと思うたで。それやったら、こない
javascript
1const regex = /aaa(([^)]+))/g;
2const found = Array.from(paragraph.matchAll(regex), m => m[1]);
な感じかのう ➡ サンプル
追記:
最短マッチ を使う方法もあるで。上のコードでは、/aaa(([^)]+))/g としていて、これの中にある [^)]+ は、「)ではない文字の1つ以上の連続」を表して、この「)ではない文字」という指定をせずに、単に、
/aaa((.+))/g だと、aaa( と ) に囲まれた文字は何でもよく、つまり )でもよいことになります。これに加えて、+ や * はなるべく長い部分でマッチさせるので、paragraph に含まれる、最後の)でマッチすることになり、対になる)までの部分とマッチしてくれへんのや。そこでどうするかゆうたら、+ や * の後に ? を付けると、なるべく短くマッチしてくれるようになるねん。
つまり、こないな正規表現
javascript
1const regex = /aaa((.+?))/g;
にしても、うまくいくで ➡ サンプル
2021/10/12 05:28