回答編集履歴

1

sample

2017/01/13 08:58

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -1,3 +1,49 @@
1
1
  例示のテキストにはみあたらないyearやらmonthやらdayが正規表現の方で記載されているのですが
2
2
 
3
3
  実際の例示のテキストには挿入されているのでしょうか?
4
+
5
+
6
+
7
+ #sample
8
+
9
+
10
+
11
+ 手を抜いていいならこんな感じ
12
+
13
+ ```PHP
14
+
15
+ $pattern="/(\d{4}[年\/]\d{1,2}[月\/]\d{1,2}日*).+?(\d{1,2}[:時]\d{1,2}分*)/u";
16
+
17
+ $str="1.「明日は2017年1月29日です。現在の時刻は14:58です」";
18
+
19
+ if(preg_match($pattern,$str,$m)){
20
+
21
+ print $m[1].",".$m[2]."<br>";
22
+
23
+ }
24
+
25
+ $str="2.「明日は2017/01/29です、現在時刻は14時58分です」 ";
26
+
27
+ preg_match($pattern,$str,$m);
28
+
29
+ if(preg_match($pattern,$str,$m)){
30
+
31
+ print $m[1].",".$m[2]."<br>";
32
+
33
+ }
34
+
35
+
36
+
37
+ ```
38
+
39
+ ただし上記patternだと
40
+
41
+ $str="3.「明日は2017/01月29です、現在時刻は14:58分です」 ";
42
+
43
+ のような中途半端なものにもマッチしますので、きちんとやるなら以下のように場合分けが必要です
44
+
45
+
46
+
47
+ $pattern="/(\d{4}年\d{1,2}月\d{1,2}日|\d{4}\/\d{1,2}\/\d{1,2}).+?(\d{1,2}時\d{1,2}分|\d{1,2}[:]\d{1,2})/u";
48
+
49
+