回答編集履歴

1

ソース修正

2021/09/24 01:48

投稿

退会済みユーザー
test CHANGED
@@ -17,3 +17,25 @@
17
17
  ```
18
18
 
19
19
  な感じかのう ➡ [サンプル](https://codepen.io/i8086x/pen/GREXWXa?editors=0012)
20
+
21
+
22
+
23
+ **追記:**
24
+
25
+
26
+
27
+ **最短マッチ** を使う方法もあるで。上のコードでは、`/aaa(([^)]+))/g` としていて、これの中にある `[^)]+` は、「`)`ではない文字の1つ以上の連続」を表して、この「`)`ではない文字」という指定をせずに、単に、
28
+
29
+ `/aaa((.+))/g` だと、`aaa(` と `)` に囲まれた文字は何でもよく、つまり `)`でもよいことになります。これに加えて、`+` や `*` はなるべく長い部分でマッチさせるので、`paragraph` に含まれる、最後の`)`でマッチすることになり、対になる`)`までの部分とマッチしてくれへんのや。そこでどうするかゆうたら、`+` や `*` の後に `?` を付けると、なるべく短くマッチしてくれるようになるねん。
30
+
31
+
32
+
33
+ つまり、こないな正規表現
34
+
35
+ ```javascript
36
+
37
+ const regex = /aaa((.+?))/g;
38
+
39
+ ```
40
+
41
+ にしても、うまくいくで ➡ [サンプル](https://codepen.io/i8086x/pen/zYzJWwY?editors=0012)