回答編集履歴
24
テキスト追加
answer
CHANGED
@@ -55,10 +55,13 @@
|
|
55
55
|
```
|
56
56
|
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfB が
|
57
57
|
集合Bを、**要素を列挙していなくても、実質的に**表していることになっている、
|
58
|
-
あるいは、集合論の用語でいえば正規表現
|
58
|
+
あるいは、集合論の用語でいえば正規表現 ^[a-z]{3}$ は、集合Bの
|
59
|
-
**内包的記法**をプログラムコードとして書ける形にしたもの
|
59
|
+
**内包的記法**をプログラムコードとして書ける形にしたものである、というのが
|
60
|
-
|
60
|
+
私の正規表現の理解の仕方です。
|
61
61
|
|
62
|
+
※集合の「**内包的記法**」については、以下をご参照ください。
|
63
|
+
[集合の記述法(集合 - Wikipedia)](http://ja.wikipedia.org/wiki/%E9%9B%86%E5%90%88#.E9.9B.86.E5.90.88.E3.81.AE.E8.A8.98.E8.BF.B0.E6.B3.95)
|
64
|
+
|
62
65
|
上記のように、正規表現 「^ ・・・ $」を
|
63
66
|
|
64
67
|
**ある条件を満たす文字列の集合**(を、文字列で表現したもの)
|
23
テキスト修正
answer
CHANGED
@@ -56,8 +56,8 @@
|
|
56
56
|
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfB が
|
57
57
|
集合Bを、**要素を列挙していなくても、実質的に**表していることになっている、
|
58
58
|
あるいは、集合論の用語でいえば正規表現 "^[a-z]{3}$" が、集合Bの
|
59
|
-
**内包的記法**をプログラムコード
|
59
|
+
**内包的記法**をプログラムコードとして書ける形にしたものになっている、
|
60
|
-
正規表現の理解の仕方です。
|
60
|
+
というのが私の正規表現の理解の仕方です。
|
61
61
|
|
62
62
|
上記のように、正規表現 「^ ・・・ $」を
|
63
63
|
|
22
テキスト修正
answer
CHANGED
@@ -56,7 +56,8 @@
|
|
56
56
|
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfB が
|
57
57
|
集合Bを、**要素を列挙していなくても、実質的に**表していることになっている、
|
58
58
|
あるいは、集合論の用語でいえば正規表現 "^[a-z]{3}$" が、集合Bの
|
59
|
-
**内包的
|
59
|
+
**内包的記法**をプログラムコードで書ける形にしたもの、というのが私の
|
60
|
+
正規表現の理解の仕方です。
|
60
61
|
|
61
62
|
上記のように、正規表現 「^ ・・・ $」を
|
62
63
|
|
21
テキスト修正
answer
CHANGED
@@ -55,7 +55,8 @@
|
|
55
55
|
```
|
56
56
|
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfB が
|
57
57
|
集合Bを、**要素を列挙していなくても、実質的に**表していることになっている、
|
58
|
+
あるいは、集合論の用語でいえば正規表現 "^[a-z]{3}$" が、集合Bの
|
58
|
-
というのが、私の
|
59
|
+
**内包的定義**になっている、というのが、私の正規表現の理解の仕方です。
|
59
60
|
|
60
61
|
上記のように、正規表現 「^ ・・・ $」を
|
61
62
|
|
20
テキスト修正
answer
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
を左から右へ読み進めるにしたがって、今の例でいうと、”50” や”52”といった文字列が、
|
32
32
|
「集合Aの要素として**生み出される**」もしくは、よりプログラマーっぽい「生成される」
|
33
33
|
という言葉を使って、「集合Aの要素として"50"や"52"が、**生成される**」という
|
34
|
-
イメージを持つこと
|
34
|
+
イメージを持つことが肝心だろうと思います。
|
35
35
|
この例だと、条件にあう文字列の個数は、つまり集合Aの要素数は5個と簡単に
|
36
36
|
列挙できる有限個ですから、正規表現を使わなくても、たとえば配列を使って
|
37
37
|
(※以下、コード例はすべてJavaです。)
|
19
テキスト修正
answer
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
と考えることができます。
|
69
69
|
|
70
70
|
以上、正規表現をマスターする考え方(のひとつ)として、
|
71
|
-
> 正規表現とは、ある条件を満たす文字列の集合(を文字列で表現したもの)
|
71
|
+
> 正規表現とは、ある条件を満たす文字列の集合(を文字列で表現したもの)である。
|
72
72
|
|
73
73
|
という考え方を挙げさせて頂きました。
|
74
74
|
お役に立てましたら幸いです。
|
18
テキスト修正
answer
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
と考えることができます。
|
69
69
|
|
70
70
|
以上、正規表現をマスターする考え方(のひとつ)として、
|
71
|
-
> 正規表現
|
71
|
+
> 正規表現とは、ある条件を満たす文字列の集合(を文字列で表現したもの)
|
72
72
|
|
73
73
|
という考え方を挙げさせて頂きました。
|
74
74
|
お役に立てましたら幸いです。
|
17
テキスト修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
から始めます。
|
9
9
|
これに対する私の答えは、
|
10
10
|
|
11
|
-
**ある条件
|
11
|
+
**ある条件を満たす文字列の集合**(を 、文字列で表現したもの)
|
12
12
|
|
13
13
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
14
14
|
以下、簡単な例を挙げて、説明します。
|
@@ -59,11 +59,11 @@
|
|
59
59
|
|
60
60
|
上記のように、正規表現 「^ ・・・ $」を
|
61
61
|
|
62
|
-
**ある条件
|
62
|
+
**ある条件を満たす文字列の集合**(を、文字列で表現したもの)
|
63
63
|
|
64
64
|
と考えると、^・・・$に限らず、正規表現とは何かという、最初のご質問に戻ると、
|
65
65
|
|
66
|
-
**ある条件
|
66
|
+
**ある条件を満たす文字列を含む文字列の集合**(を、文字列で表現したもの)
|
67
67
|
|
68
68
|
と考えることができます。
|
69
69
|
|
16
テキスト修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
から始めます。
|
9
9
|
これに対する私の答えは、
|
10
10
|
|
11
|
-
**ある条件にマッチする文字列の集合を 、文字列で表現したもの
|
11
|
+
**ある条件にマッチする文字列の集合**(を 、文字列で表現したもの)
|
12
12
|
|
13
13
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
14
14
|
以下、簡単な例を挙げて、説明します。
|
@@ -59,15 +59,15 @@
|
|
59
59
|
|
60
60
|
上記のように、正規表現 「^ ・・・ $」を
|
61
61
|
|
62
|
-
**ある条件にマッチする文字列の集合を、文字列で表現したもの
|
62
|
+
**ある条件にマッチする文字列の集合**(を、文字列で表現したもの)
|
63
63
|
|
64
64
|
と考えると、^・・・$に限らず、正規表現とは何かという、最初のご質問に戻ると、
|
65
65
|
|
66
|
-
**ある条件にマッチする文字列を含む文字列の集合を、文字列で表現したもの
|
66
|
+
**ある条件にマッチする文字列を含む文字列の集合**(を、文字列で表現したもの)
|
67
67
|
|
68
68
|
と考えることができます。
|
69
69
|
|
70
|
-
以上、正規表現をマスターする
|
70
|
+
以上、正規表現をマスターする考え方(のひとつ)として、
|
71
71
|
> 正規表現「^ ・・・ $」 は、条件「・・・」を満たす文字列の集合を表している。
|
72
72
|
|
73
73
|
という考え方を挙げさせて頂きました。
|
15
テキスト修正
answer
CHANGED
@@ -68,8 +68,7 @@
|
|
68
68
|
と考えることができます。
|
69
69
|
|
70
70
|
以上、正規表現をマスターする道しるべ(のひとつ)として、
|
71
|
-
> 「^ ・・・ $」 は、条件「・・・」を満たす文字列の集合を表して
|
71
|
+
> 正規表現「^ ・・・ $」 は、条件「・・・」を満たす文字列の集合を表している。
|
72
|
-
> このときの条件の書き方のルールのことを正規表現という。
|
73
72
|
|
74
73
|
という考え方を挙げさせて頂きました。
|
75
74
|
お役に立てましたら幸いです。
|
14
テキスト修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
から始めます。
|
9
9
|
これに対する私の答えは、
|
10
10
|
|
11
|
-
**ある条件にマッチする文字列の集合を 、文字列で表現
|
11
|
+
**ある条件にマッチする文字列の集合を 、文字列で表現したもの**
|
12
12
|
|
13
13
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
14
14
|
以下、簡単な例を挙げて、説明します。
|
@@ -59,11 +59,11 @@
|
|
59
59
|
|
60
60
|
上記のように、正規表現 「^ ・・・ $」を
|
61
61
|
|
62
|
-
**ある条件にマッチする文字列の集合を、文字列で表現
|
62
|
+
**ある条件にマッチする文字列の集合を、文字列で表現したもの**
|
63
63
|
|
64
64
|
と考えると、^・・・$に限らず、正規表現とは何かという、最初のご質問に戻ると、
|
65
65
|
|
66
|
-
**ある条件にマッチする文字列を含む文字列の集合を、文字列で表現
|
66
|
+
**ある条件にマッチする文字列を含む文字列の集合を、文字列で表現したもの**
|
67
67
|
|
68
68
|
と考えることができます。
|
69
69
|
|
13
テキスト修正
answer
CHANGED
@@ -4,9 +4,10 @@
|
|
4
4
|
ガッツリ読むのが良いと思いますが、以下に、あくまで私個人のイメージを書かせて頂きます。
|
5
5
|
説明のための便宜上、様々な正規表現の中でも、まずは
|
6
6
|
「^ で始まり、$で終わるもの」
|
7
|
+
に話を限定させてください。つまり、まずは**正規表現「^ ・・・ $」とは何か?**という問い
|
8
|
+
から始めます。
|
7
|
-
に
|
9
|
+
これに対する私の答えは、
|
8
10
|
|
9
|
-
正規表現 ^ ・・・ $ とは何かという質問への、私の回答は、
|
10
11
|
**ある条件にマッチする文字列の集合を 、文字列で表現するための、書き方のお約束**
|
11
12
|
|
12
13
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
12
誤字修正
answer
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
```lang-<java>
|
38
38
|
String[] arrayOfA = {"50", "52", "54", "56", "58" };
|
39
39
|
```
|
40
|
-
というふうに書けますが、もっとずっと要素数の多い集合や、(
|
40
|
+
というふうに書けますが、もっとずっと要素数の多い集合や、(可算ではあるが)無限個の
|
41
41
|
要素を持つ集合も考えられますよね。たとえば、集合Bを
|
42
42
|
|
43
43
|
B = { x | x は半角小文字のアルファベットだけから構成され、かつ、長さ3文字の文字列 }
|
11
テキスト修正
answer
CHANGED
@@ -37,8 +37,8 @@
|
|
37
37
|
```lang-<java>
|
38
38
|
String[] arrayOfA = {"50", "52", "54", "56", "58" };
|
39
39
|
```
|
40
|
-
というふうに書けますが、もっとずっと要素数の多い集合
|
40
|
+
というふうに書けますが、もっとずっと要素数の多い集合や、(加算ではあるが)無限個の
|
41
|
-
たとえば、集合Bを
|
41
|
+
要素を持つ集合も考えられますよね。たとえば、集合Bを
|
42
42
|
|
43
43
|
B = { x | x は半角小文字のアルファベットだけから構成され、かつ、長さ3文字の文字列 }
|
44
44
|
|
10
テキスト修正
answer
CHANGED
@@ -52,8 +52,8 @@
|
|
52
52
|
```lang-<java>
|
53
53
|
String regExpOfB = "^[a-z]{3}$";
|
54
54
|
```
|
55
|
-
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfBが
|
55
|
+
と書けまして(javaでは、前後の/ は不要です。)、この regExpOfB が
|
56
|
-
集合Bを、要素を列挙していなくても
|
56
|
+
集合Bを、**要素を列挙していなくても、実質的に**表していることになっている、
|
57
57
|
というのが、私の考え方です。
|
58
58
|
|
59
59
|
上記のように、正規表現 「^ ・・・ $」を
|
9
テキスト修正
answer
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
上記のように、正規表現 「^ ・・・ $」を
|
60
60
|
|
61
|
-
**ある条件
|
61
|
+
**ある条件にマッチする文字列の集合を、文字列で表現するための、書き方のお約束**
|
62
62
|
|
63
63
|
と考えると、^・・・$に限らず、正規表現とは何かという、最初のご質問に戻ると、
|
64
64
|
|
8
テキスト修正
answer
CHANGED
@@ -28,8 +28,9 @@
|
|
28
28
|
^5[0|2|4|6|8]$
|
29
29
|
|
30
30
|
を左から右へ読み進めるにしたがって、今の例でいうと、”50” や”52”といった文字列が、
|
31
|
-
「集合Aの要素として**生み出される**」
|
31
|
+
「集合Aの要素として**生み出される**」もしくは、よりプログラマーっぽい「生成される」
|
32
|
+
という言葉を使って、「集合Aの要素として"50"や"52"が、**生成される**」という
|
32
|
-
|
33
|
+
イメージを持つことかと思います。
|
33
34
|
この例だと、条件にあう文字列の個数は、つまり集合Aの要素数は5個と簡単に
|
34
35
|
列挙できる有限個ですから、正規表現を使わなくても、たとえば配列を使って
|
35
36
|
(※以下、コード例はすべてJavaです。)
|
7
テキスト修正
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
に話を限定させてください。
|
8
8
|
|
9
9
|
正規表現 ^ ・・・ $ とは何かという質問への、私の回答は、
|
10
|
-
**ある条件
|
10
|
+
**ある条件にマッチする文字列の集合を 、文字列で表現するための、書き方のお約束**
|
11
11
|
|
12
12
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
13
13
|
以下、簡単な例を挙げて、説明します。
|
6
テキスト修正
answer
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
とすると、集合Bの要素数は何個になるかというと、26の3乗で17576個という個数になり、
|
45
45
|
さきほどのAのように、プログラムの中でこんなコード
|
46
46
|
```lang-<java>
|
47
|
-
String[] arrayOfB = { “aaa”, “aab” … , “zzz” }; //
|
47
|
+
String[] arrayOfB = { “aaa”, “aab” … , “zzz” }; // 17576個、全部並べて書きます?
|
48
48
|
```
|
49
49
|
で、すべてを列挙して書くなんてことは、とてもやっていられないですよね。
|
50
50
|
しかし、正規表現を使えば、
|
5
テキスト修正
answer
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
とすると、集合Bの要素数は何個になるかというと、26の3乗で17576個という個数になり、
|
45
45
|
さきほどのAのように、プログラムの中でこんなコード
|
46
46
|
```lang-<java>
|
47
|
-
String[] arrayOfB = { “aaa”, “aab” … , “zzz” }; //こんなふうに全部並べて書けるけど
|
47
|
+
String[] arrayOfB = { “aaa”, “aab” … , “zzz” }; //こんなふうに全部並べて書けるけど^_^;
|
48
48
|
```
|
49
49
|
で、すべてを列挙して書くなんてことは、とてもやっていられないですよね。
|
50
50
|
しかし、正規表現を使えば、
|
4
テキスト修正
answer
CHANGED
@@ -4,10 +4,9 @@
|
|
4
4
|
ガッツリ読むのが良いと思いますが、以下に、あくまで私個人のイメージを書かせて頂きます。
|
5
5
|
説明のための便宜上、様々な正規表現の中でも、まずは
|
6
6
|
「^ で始まり、$で終わるもの」
|
7
|
-
に話を限定させてください。
|
7
|
+
に話を限定させてください。
|
8
8
|
|
9
|
-
正規表現 ^ ・・・ $ とは何かという、私の回答は
|
9
|
+
正規表現 ^ ・・・ $ とは何かという質問への、私の回答は、
|
10
|
-
|
11
10
|
**ある条件「・・・」にマッチする文字列の集合を 、文字列で表現するための、書き方のお約束**
|
12
11
|
|
13
12
|
というものになります。なお、ここでいう「集合」とは、数学で習う集合(Set)のことです。
|
3
テキスト修正
answer
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
ご質問の
|
2
2
|
> 「正規表現」とは結局なになのか?
|
3
3
|
に対して、きちんと自分なりに自信のある答えを得るには、やはり「[詳説 正規表現](http://www.amazon.co.jp/dp/4873113598)」あたりを
|
4
|
-
ガッツリ読むのが良いと思いますが、以下に、あくまで私個人の
|
4
|
+
ガッツリ読むのが良いと思いますが、以下に、あくまで私個人のイメージを書かせて頂きます。
|
5
|
-
書かせて頂きます。
|
6
|
-
|
5
|
+
説明のための便宜上、様々な正規表現の中でも、まずは
|
7
6
|
「^ で始まり、$で終わるもの」
|
8
7
|
に話を限定させてください。その前提で、
|
9
8
|
|
2
テキスト修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
ご質問の
|
2
2
|
> 「正規表現」とは結局なになのか?
|
3
3
|
に対して、きちんと自分なりに自信のある答えを得るには、やはり「[詳説 正規表現](http://www.amazon.co.jp/dp/4873113598)」あたりを
|
4
|
-
ガッツリ読む
|
4
|
+
ガッツリ読むのが良いと思いますが、以下に、あくまで私個人のざっくりなイメージを
|
5
5
|
書かせて頂きます。
|
6
6
|
このイメージを説明するために、様々な正規表現の中でも、まずは
|
7
7
|
「^ で始まり、$で終わるもの」
|
1
テキスト修正
answer
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
ご質問の
|
2
2
|
> 「正規表現」とは結局なになのか?
|
3
|
-
に対して、きちんと自分なりの答えを得るには、やはり「[詳説 正規表現](http://www.amazon.co.jp/dp/4873113598)」
|
3
|
+
に対して、きちんと自分なりに自信のある答えを得るには、やはり「[詳説 正規表現](http://www.amazon.co.jp/dp/4873113598)」あたりを
|
4
|
-
|
4
|
+
ガッツリ読むしかないとは思いますので、以下は、あくまで私個人のざっくりなイメージを
|
5
|
-
|
5
|
+
書かせて頂きます。
|
6
6
|
このイメージを説明するために、様々な正規表現の中でも、まずは
|
7
7
|
「^ で始まり、$で終わるもの」
|
8
8
|
に話を限定させてください。その前提で、
|