回答編集履歴

3

修正

2016/08/02 11:39

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```php
10
10
 
11
- $subject = "15:00~20:00/20:00~翌4:00";
11
+ $subject = "本日の出退勤は15:00~20:00/20:00~翌4:00です";
12
12
 
13
13
  $pattern = '/\d{1,2}:\d{2}/';
14
14
 

2

コード追加

2016/08/02 11:39

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -1,3 +1,21 @@
1
1
  正規表現はパターンマッチですから、その想定されるデータの全てが一文で表現可能な定義を常に満たすもので無いと全てに対応できるものを考えるのは難しいです。
2
2
 
3
3
  例えばですが、「[00:00]このパターンに一致する文字列を全て抜き出し、最初に登場する値が出勤時間、最後に登場する値が退勤時間である。」に全ての入力が一致するならやりようはあると思います。
4
+
5
+
6
+
7
+ ちょっとコードあってるか自信ないですが、例えばこんな感じ
8
+
9
+ ```php
10
+
11
+ $subject = "15:00~20:00/20:00~翌4:00";
12
+
13
+ $pattern = '/\d{1,2}:\d{2}/';
14
+
15
+ preg_match_all($pattern, $subject, $m);
16
+
17
+ print_r("出勤: ".$m[0][0]." / 退勤: ".end($m[0]));
18
+
19
+ //出勤: 15:00 / 退勤: 4:00
20
+
21
+ ```

1

誤字修正

2016/08/02 11:36

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -1,3 +1,3 @@
1
1
  正規表現はパターンマッチですから、その想定されるデータの全てが一文で表現可能な定義を常に満たすもので無いと全てに対応できるものを考えるのは難しいです。
2
2
 
3
- 例えばですが、「[00:00]このパターンに一致する文字列を全て抜き出し、最初に登場する値が出勤時間、最後に登場する値が大金時間である。」に全ての入力が一致するならやりようはあると思います。
3
+ 例えばですが、「[00:00]このパターンに一致する文字列を全て抜き出し、最初に登場する値が出勤時間、最後に登場する値が退勤時間である。」に全ての入力が一致するならやりようはあると思います。