回答編集履歴

4

\\\\\\n\.\*\?

2017/07/26 12:48

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,4 +1,12 @@
1
+ ### バックトラック
2
+
3
+
4
+
1
5
  `(\\\n.*?)*` は最長一致ですが、`.*?` は最短一致であり、`(\\\n.*?)*` がどれだけ長い文字列にマッチしようとも、**バックトラック**によって最も短い文字列になるまで切り詰められます。
6
+
7
+
8
+
9
+ ### オプションの定義
2
10
 
3
11
 
4
12
 
@@ -8,7 +16,7 @@
8
16
 
9
17
  概ね、その通りだと思います。
10
18
 
11
- `*` は「0回以上の繰り返し」なので、あってもなくても良い(空文字として評価できる)という意味で「オプション」です。
19
+ `*` は「0回以上の繰り返し」なので、空文字として評価できる(あってもなくても良い)という意味で「オプション」です。
12
20
 
13
21
  ただし、`\\\n.*?` に関しては `\\\n.` が0文字に切り詰められないのでオプションとは呼べません。
14
22
 

3

\\\\\\n\.\*\?

2017/07/26 12:48

投稿

think49
think49

スコア18166

test CHANGED
@@ -6,9 +6,13 @@
6
6
 
7
7
 
8
8
 
9
- はい。その通りだと思います。
9
+ 概ね、その通りだと思います。
10
10
 
11
- `*` は「0回以上の繰り返し」なので、あってもなくても良いという意味で「オプション」です。
11
+ `*` は「0回以上の繰り返し」なので、あってもなくても良い(空文字して評価できる)という意味で「オプション」です。
12
+
13
+ ただし、`\\\n.*?` に関しては `\\\n.` が0文字に切り詰められないのでオプションとは呼べません。
14
+
15
+ その一つ外側で `()*` が存在するので、そこで空文字として評価され、「オプション」となります。
12
16
 
13
17
 
14
18
 

2

オプションというのは

2017/07/26 12:46

投稿

think49
think49

スコア18166

test CHANGED
@@ -2,4 +2,14 @@
2
2
 
3
3
 
4
4
 
5
+ > 等号より後ろの部分がオプションというのは、正規表現の等号のあとにある三つの*のことを言っているのでしょうか。
6
+
7
+
8
+
9
+ はい。その通りだと思います。
10
+
11
+ `*` は「0回以上の繰り返し」なので、あってもなくても良いという意味で「オプション」です。
12
+
13
+
14
+
5
15
  Re: aaaaaaaa さん

1

バックトラック

2017/07/26 12:42

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,6 +1,4 @@
1
- `(\\\n.*?)*` は最長一致ですが、`.*?` は最短一致であり、最も文字会文字列にマッチします。
1
+ `(\\\n.*?)*` は最長一致ですが、`.*?` は最短一致であり、`(\\\n.*?)*` がどれだけ長い文字列にマッチしようとも、**バックトラック**によって最も短い文字列になるで切り詰められます。
2
-
3
- 以前、話題に上がった**バックトラック**を思い出せば、理解できそうな気がしますが、いかがでしょうか。
4
2
 
5
3
 
6
4