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

回答編集履歴

4

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

2017/07/26 12:48

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,9 +1,13 @@
1
+ ### バックトラック
2
+
1
3
  `(\\\n.*?)*` は最長一致ですが、`.*?` は最短一致であり、`(\\\n.*?)*` がどれだけ長い文字列にマッチしようとも、**バックトラック**によって最も短い文字列になるまで切り詰められます。
2
4
 
5
+ ### オプションの定義
6
+
3
7
  > 等号より後ろの部分がオプションというのは、正規表現の等号のあとにある三つの*のことを言っているのでしょうか。
4
8
 
5
9
  概ね、その通りだと思います。
6
- `*` は「0回以上の繰り返し」なので、あってもなくても良い(空文字として評価できる)という意味で「オプション」です。
10
+ `*` は「0回以上の繰り返し」なので、空文字として評価できる(あってもなくても良い)という意味で「オプション」です。
7
11
  ただし、`\\\n.*?` に関しては `\\\n.` が0文字に切り詰められないのでオプションとは呼べません。
8
12
  その一つ外側で `()*` が存在するので、そこで空文字として評価され、「オプション」となります。
9
13
 

3

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

2017/07/26 12:48

投稿

think49
think49

スコア18194

answer CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  > 等号より後ろの部分がオプションというのは、正規表現の等号のあとにある三つの*のことを言っているのでしょうか。
4
4
 
5
- はい。その通りだと思います。
5
+ 概ね、その通りだと思います。
6
- `*` は「0回以上の繰り返し」なので、あってもなくても良いという意味で「オプション」です。
6
+ `*` は「0回以上の繰り返し」なので、あってもなくても良い(空文字して評価できる)という意味で「オプション」です。
7
+ ただし、`\\\n.*?` に関しては `\\\n.` が0文字に切り詰められないのでオプションとは呼べません。
8
+ その一つ外側で `()*` が存在するので、そこで空文字として評価され、「オプション」となります。
7
9
 
8
10
  Re: aaaaaaaa さん

2

オプションというのは

2017/07/26 12:46

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,3 +1,8 @@
1
1
  `(\\\n.*?)*` は最長一致ですが、`.*?` は最短一致であり、`(\\\n.*?)*` がどれだけ長い文字列にマッチしようとも、**バックトラック**によって最も短い文字列になるまで切り詰められます。
2
2
 
3
+ > 等号より後ろの部分がオプションというのは、正規表現の等号のあとにある三つの*のことを言っているのでしょうか。
4
+
5
+ はい。その通りだと思います。
6
+ `*` は「0回以上の繰り返し」なので、あってもなくても良いという意味で「オプション」です。
7
+
3
8
  Re: aaaaaaaa さん

1

バックトラック

2017/07/26 12:42

投稿

think49
think49

スコア18194

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