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

回答編集履歴

16

テキスト修正

2015/06/20 00:32

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,8 +1,10 @@
1
1
  こんにちは。
2
2
 
3
- ご質問の意図として、ログに出てくるIPv4アドレス部分
3
+ ご質問の意図として、
4
+
4
- (例では、444.333.222.111となっている部分)
5
+   ログに出てくるIPv4アドレス部分(例では、444.333.222.111となっている部分)
5
- 空文字列に置換して、ログから消してしまいたい
6
+   空文字列に置換して、ログから消してしまいたい
7
+
6
8
  ということなのかなと解釈しての回答になります。
7
9
  (※違っていたらすみません、たぶん無意味な回答になっているので、スルーして下さい。)
8
10
 

15

サンプルコード修正

2015/06/20 00:32

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -22,7 +22,7 @@
22
22
  <?php
23
23
  $target = '19 Jun 21:28:46 - 304 GET:/ ::ffff:444.333.222.111 Safari/537.36';
24
24
  $ip_addr_regex = "/\b(?:\d{1,3}\.){3}\d{1,3}\b/";
25
- $replaced = preg_replace($ip_adr_regex , "", $target );
25
+ $replaced = preg_replace($ip_addr_regex , "", $target );
26
26
  echo "$replaced\n";
27
27
  ```
28
28
 

14

テキスト修正

2015/06/19 23:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  (例では、444.333.222.111となっている部分)
5
5
  を空文字列に置換して、ログから消してしまいたい、
6
6
  ということなのかなと解釈しての回答になります。
7
- (※違っていたらすみませんたぶん無意味な回答になっているので、スルーして下さい。)
7
+ (※違っていたらすみませんたぶん無意味な回答になっているので、スルーして下さい。)
8
8
 
9
9
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト
10
10
  [regular-expressions.info](http://www.regular-expressions.info/about.html)

13

テキスト修正

2015/06/19 23:47

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,7 +1,9 @@
1
1
  こんにちは。
2
2
 
3
- ご質問の意図として、ログの例IPv4アドレス部分を空文字列に
3
+ ご質問の意図として、ログに出てくるIPv4アドレス部分
4
+ (例では、444.333.222.111となっている部分)
5
+ を空文字列に置換して、ログから消してしまいたい、
4
- 置換したいということなのかなと解釈しての回答になります。
6
+ ということなのかなと解釈しての回答になります。
5
7
  (※違っていたらすみません。たぶん無意味な回答になっているので、スルーして下さい。)
6
8
 
7
9
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト

12

テキスト修正

2015/06/19 23:25

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,10 +10,10 @@
10
10
 
11
11
  [http://www.regular-expressions.info/examples.html](http://www.regular-expressions.info/examples.html)
12
12
 
13
- IP Addresses
13
+ > IP Addresses
14
14
  にある、一番短いもの
15
15
  > Similarly, you can shorten the quick regex to \b(?:\d{1,3}\.){3}\d{1,3}\b
16
- を使て、ご質問によれば
16
+ を使うとして、ご質問によれば
17
17
  > preg_replaceで第2引数を""で
18
18
  とのことなので、以下でいかがでしょうか。
19
19
  ```lang-php

11

テキスト修正

2015/06/19 23:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -6,14 +6,14 @@
6
6
 
7
7
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト
8
8
  [regular-expressions.info](http://www.regular-expressions.info/about.html)
9
- にIPアドレスの正規表現が載っているので、以下、れを拝借しての回答となります。
9
+ にIPアドレスの正規表現が載っているので、こちらから拝借します。
10
10
 
11
11
  [http://www.regular-expressions.info/examples.html](http://www.regular-expressions.info/examples.html)
12
12
 
13
13
  IP Addresses
14
14
  にある、一番短いもの
15
15
  > Similarly, you can shorten the quick regex to \b(?:\d{1,3}\.){3}\d{1,3}\b
16
- お借りして、ご質問によれば
16
+ 使って、ご質問によれば
17
17
  > preg_replaceで第2引数を""で
18
18
  とのことなので、以下でいかがでしょうか。
19
19
  ```lang-php

10

テキスト修正

2015/06/19 23:12

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  こんにちは。
2
2
 
3
- ご質問の意図として、ログの例にある、444.333.222.111 の部分を
3
+ ご質問の意図として、ログの例にある、IPv4アドレス部分を空文字列に
4
- 空文字列に置換したいという趣旨解しての回答になります。
4
+ 置換したいというなのかなとしての回答になります。
5
- (違っていたらすみません無意味な回答になっているのでスルーして下さい。)
5
+ 違っていたらすみません。たぶん無意味な回答になっているのでスルーして下さい。)
6
6
 
7
7
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト
8
8
  [regular-expressions.info](http://www.regular-expressions.info/about.html)

9

テキスト修正

2015/06/19 23:03

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  ご質問の意図としては、ログの例にある、444.333.222.111 の部分を
4
4
  空文字列に置換したいという趣旨と理解しての回答になります。
5
+ (違っていたら、すみません、無意味な回答になっているのでスルーして下さい。)
5
6
 
6
7
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト
7
8
  [regular-expressions.info](http://www.regular-expressions.info/about.html)

8

テキスト修正

2015/06/19 22:58

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -17,18 +17,10 @@
17
17
  とのことなので、以下でいかがでしょうか。
18
18
  ```lang-php
19
19
  <?php
20
-
21
20
  $target = '19 Jun 21:28:46 - 304 GET:/ ::ffff:444.333.222.111 Safari/537.36';
22
-
23
21
  $ip_addr_regex = "/\b(?:\d{1,3}\.){3}\d{1,3}\b/";
24
-
25
22
  $replaced = preg_replace($ip_adr_regex , "", $target );
26
-
27
23
  echo "$replaced\n";
28
24
  ```
29
- 上記を実行すると、444.333.222.111の部分が空文字列に置き換わって
30
- > 19 Jun 21:28:46 - 304 GET:/ ::ffff: Safari/537.36
31
- と表示されると思います。
32
25
 
33
-
34
26
  ご参考になれば幸いです

7

テキスト修正

2015/06/19 22:57

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,5 +1,8 @@
1
1
  こんにちは。
2
2
 
3
+ ご質問の意図としては、ログの例にある、444.333.222.111 の部分を
4
+ 空文字列に置換したいという趣旨と理解しての回答になります。
5
+
3
6
  オライリー「[正規表現クックブック](http://www.oreilly.co.jp/books/9784873114507/)」の著者であるJan Goyvaertsさんのサイト
4
7
  [regular-expressions.info](http://www.regular-expressions.info/about.html)
5
8
  にIPアドレスの正規表現が載っているので、以下、これを拝借しての回答となります。

6

テキスト修正

2015/06/19 22:55

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -27,36 +27,5 @@
27
27
  > 19 Jun 21:28:46 - 304 GET:/ ::ffff: Safari/537.36
28
28
  と表示されると思います。
29
29
 
30
- ご参考になれば幸いです。
31
30
 
32
- ---
33
- 補足
34
-
35
-
36
- ちなみに正規表現
37
-
38
- /\b(?:\d{1,3}\.){3}\d{1,3}\b/
39
-
40
- の **?:** は非格納グループ(Non-capture group)と
41
- 呼ばれる指定の仕方で、コロンの後ろから閉じるカッコまでを
42
- 後方参照のための変数に**格納しない**という意味です。
43
- **?:** の無い
44
-
45
- /\b(\d{1,3}\.){3}\d{1,3}\b/
46
-
47
- との違は、以下の2つ
31
+ ご参考になれば幸です
48
- ```lang-php
49
- preg_match(/\b(?:\d{1,3}\.){3}\d{1,3}\b/, $target, $matches1);
50
- ```
51
-
52
- ```lang-php
53
- preg_match(/\b(\d{1,3}\.){3}\d{1,3}\b/, $target, $matches2);
54
- ```
55
- とで得られる $matches1 および $matches2 を var_dump() で
56
- 表示させれば、その違いが分かると思います。
57
-
58
- 今回のご質問では、IPアドレスに相当する部分全体**だけ**が分かればいいので、
59
- **?:**
60
- を、regular-expressions.info の例のまま、残しています。
61
-
62
- 補足は以上です。

5

テキスト修正

2015/06/19 22:53

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  echo "$replaced\n";
25
25
  ```
26
- 上記を実行すると、
26
+ 上記を実行すると、444.333.222.111の部分が空文字列に置き換わって
27
27
  > 19 Jun 21:28:46 - 304 GET:/ ::ffff: Safari/537.36
28
28
  と表示されると思います。
29
29
 

4

テキスト修正

2015/06/19 22:51

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -55,7 +55,7 @@
55
55
  とで得られる $matches1 および $matches2 を var_dump() で
56
56
  表示させれば、その違いが分かると思います。
57
57
 
58
- 今回のご質問では、IPアドレスに相当する部分全体が分かればいいので、
58
+ 今回のご質問では、IPアドレスに相当する部分全体**だけ**が分かればいいので、
59
59
  **?:**
60
60
  を、regular-expressions.info の例のまま、残しています。
61
61
 

3

テキスト修正

2015/06/19 22:48

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  IP Addresses
10
10
  にある、一番短いもの
11
11
  > Similarly, you can shorten the quick regex to \b(?:\d{1,3}\.){3}\d{1,3}\b
12
- をお借りして、
12
+ をお借りして、ご質問によれば
13
13
  > preg_replaceで第2引数を""で
14
14
  とのことなので、以下でいかがでしょうか。
15
15
  ```lang-php

2

テキスト修正

2015/06/19 22:41

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -27,4 +27,36 @@
27
27
  > 19 Jun 21:28:46 - 304 GET:/ ::ffff: Safari/537.36
28
28
  と表示されると思います。
29
29
 
30
- ご参考になれば幸いです。
30
+ ご参考になれば幸いです。
31
+
32
+ ---
33
+ 補足
34
+
35
+
36
+ ちなみに正規表現
37
+
38
+ /\b(?:\d{1,3}\.){3}\d{1,3}\b/
39
+
40
+ の **?:** は非格納グループ(Non-capture group)と
41
+ 呼ばれる指定の仕方で、コロンの後ろから閉じるカッコまでを
42
+ 後方参照のための変数に**格納しない**という意味です。
43
+ **?:** の無い
44
+
45
+ /\b(\d{1,3}\.){3}\d{1,3}\b/
46
+
47
+ との違いは、以下の2つ
48
+ ```lang-php
49
+ preg_match(/\b(?:\d{1,3}\.){3}\d{1,3}\b/, $target, $matches1);
50
+ ```
51
+
52
+ ```lang-php
53
+ preg_match(/\b(\d{1,3}\.){3}\d{1,3}\b/, $target, $matches2);
54
+ ```
55
+ とで得られる $matches1 および $matches2 を var_dump() で
56
+ 表示させれば、その違いが分かると思います。
57
+
58
+ 今回のご質問では、IPアドレスに相当する部分全体が分かればいいので、
59
+ **?:**
60
+ を、regular-expressions.info の例のまま、残しています。
61
+
62
+ 補足は以上です。

1

テキスト修正

2015/06/19 22:39

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  $target = '19 Jun 21:28:46 - 304 GET:/ ::ffff:444.333.222.111 Safari/537.36';
19
19
 
20
- $ip_adr_regex = "/\b(?:\d{1,3}\.){3}\d{1,3}\b/";
20
+ $ip_addr_regex = "/\b(?:\d{1,3}\.){3}\d{1,3}\b/";
21
21
 
22
22
  $replaced = preg_replace($ip_adr_regex , "", $target );
23
23