回答編集履歴
1
修正
answer
CHANGED
@@ -5,10 +5,13 @@
|
|
5
5
|
これらは特定の「位置」にマッチする正規表現です。
|
6
6
|
たとえば `(?=aaa)` は `aaa` の直前にマッチし、`(?<=aaa)` は `aaa` の直後にマッチします。
|
7
7
|
|
8
|
+
つまり `aaa(` の直後から `)` の直前までの `.*`(0 個以上の任意の文字) を検索すればいいわけですが、単純に `.*` と書いてしまうと、最長一致の法則によりたとえば `aaa(bbb) ccc(ddd)` であれば最後の閉じカッコの直前までの `bbb) ccc(ddd` にマッチしてしまいます。
|
9
|
+
これを防ぐために `.*` ではなく `.*?` あるいは `[^)]*` と書けば、最初の閉じカッコの直前までにマッチします。
|
10
|
+
|
8
11
|
```javascript
|
9
12
|
const regex = /(?<=aaa().*?(?=))/g;
|
10
13
|
const founds = paragraph.match(regex);
|
11
14
|
alert(founds[0]);
|
12
15
|
```
|
13
16
|
|
14
|
-
founds には配列が入るので、そのうち最初の要素を取り出したい時には上記のように `
|
17
|
+
founds には配列が入るので、そのうち最初の要素を取り出したい時には上記のように `founds[0]` を使います。
|