質問するログイン新規登録

回答編集履歴

1

修正

2021/09/24 02:08

投稿

Zuishin
Zuishin

スコア28675

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 には配列が入るので、そのうち最初の要素を取り出したい時には上記のように `found[0]` を使います。
17
+ founds には配列が入るので、そのうち最初の要素を取り出したい時には上記のように `founds[0]` を使います。