回答編集履歴

2

追記

2015/11/18 08:45

投稿

退会済みユーザー
test CHANGED
@@ -19,3 +19,53 @@
19
19
 
20
20
 
21
21
  元々の文字列に「番地」が付いているものを除外する処理は必要になりそう…
22
+
23
+
24
+
25
+ ---
26
+
27
+
28
+
29
+ ###そもそも正規表現でしか実現できないのかを考えよう。
30
+
31
+
32
+
33
+ 正規表現を使わなくても以下のようにして書くことができる。
34
+
35
+ 何をやっているか明らかなので、メンテナンスもしやすい。
36
+
37
+
38
+
39
+ ```php
40
+
41
+ $str = "あいうえお丁目 かきくけこ さしすせそ";
42
+
43
+ $str = str_replace(' ', ' ', $str);
44
+
45
+ $arr = explode(" ", $str);
46
+
47
+ for ($i = 0; $i < count($arr); $i++) {
48
+
49
+ if ($i == 1 && !strstr($arr[$i], '番地')) {
50
+
51
+ $arr[$i] = $arr[$i] . '番地';
52
+
53
+ }
54
+
55
+ }
56
+
57
+ var_dump(implode(' ', $arr));
58
+
59
+ ```
60
+
61
+
62
+
63
+ ###そもそも「正規表現」のアプローチは最終手段
64
+
65
+
66
+
67
+ 自分でパターンを書き起こすことができないなら、使うものではない。のちにバグが見つかったときに、修正できますか?イレギュラーなケースが出てきたときに、パターンの変更に対応できますか?
68
+
69
+
70
+
71
+ 「正規表現」は複雑だし、学習コストも高い。よってメンテナンス性が著しく低い。複雑な条件が書かれたものを後で引き継ぐ人の負担を考えよう。「正規表現」を使わなくても目的が達成できるなら、使わないのが吉。

1

追記

2015/11/18 08:45

投稿

退会済みユーザー
test CHANGED
@@ -15,3 +15,7 @@
15
15
  var_dump($str);
16
16
 
17
17
  ```
18
+
19
+
20
+
21
+ 元々の文字列に「番地」が付いているものを除外する処理は必要になりそう…