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

回答編集履歴

1

PHP

2019/10/10 06:53

投稿

yambejp
yambejp

スコア117946

answer CHANGED
@@ -10,4 +10,27 @@
10
10
 
11
11
  ```
12
12
  肯定先読み・後読み
13
- 数字が前にあって、後ろに3桁の数字がある繰り返しで文字列の終わりまで
13
+ 数字が前にあって、後ろに3桁の数字がある繰り返しで文字列の終わりまで
14
+
15
+ # 補足
16
+ こうするとわかりますか?
17
+ ```PHP
18
+ $string = '1234567890';
19
+ $pattern='/(\d)(?=(?:\d{3})+(?!\d))/';
20
+ if(preg_match_all($pattern,$string,$matches)){
21
+ print_r($matches); //1、4、7の箇所がヒットするこれを1,、4,、7,に置き換える
22
+ print preg_replace($pattern,'$1,',$string);
23
+ }
24
+ ```
25
+ ヒットした箇所が0のところで、ヒットする文字が1のところです
26
+ 0を置換するとき1を利用しているに過ぎません
27
+ もっと簡易的にみれば$1をつかう必要もありません
28
+
29
+ ```PHP
30
+ $string = '1234567890';
31
+ $pattern='/\d(?=(?:\d{3})+(?!\d))/';
32
+ if(preg_match_all($pattern,$string,$matches)){
33
+ print_r($matches);
34
+ print preg_replace($pattern,'$0,',$string);
35
+ }
36
+ ```