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

回答編集履歴

1

sample

2017/01/13 08:58

投稿

yambejp
yambejp

スコア117877

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