回答編集履歴

3

表現修正

2015/09/30 11:54

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -17,3 +17,7 @@
17
17
  所で感嘆符にだけHITすればよかったのでしょうか?
18
18
 
19
19
  コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です
20
+
21
+ 単独の感嘆符が存在するかどうかを判定ですだけならいいのですが、
22
+
23
+ HITする部分を抽出して処理する場合不十分かも知れません

2

表示化け対応

2015/09/30 11:54

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  <?php
6
6
 
7
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
7
+ if (preg_match('/(?<! [!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
8
8
 
9
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
9
+ if (preg_match('/(?<! [!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
10
10
 
11
11
  ?>
12
+
13
+ //teratail上での表示が壊れるので、?<![!?] の!と[の間にスペースを入れています。
12
14
 
13
15
  ```
14
16
 

1

表示が壊れているので修正実験中

2015/09/30 11:49

投稿

hirohiro
hirohiro

スコア2068

test CHANGED
@@ -4,30 +4,14 @@
4
4
 
5
5
  <?php
6
6
 
7
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) {
7
+ if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
8
8
 
9
- echo 'マッチしました。';
10
-
11
- } else {
12
-
13
- echo 'マッチしませんでした。';
14
-
15
- }
16
-
17
-
18
-
19
-
20
-
21
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) {
9
+ if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
22
-
23
- echo 'マッチしました。';
24
-
25
- } else {
26
-
27
- echo 'マッチしませんでした。';
28
-
29
- }
30
10
 
31
11
  ?>
32
12
 
33
13
  ```
14
+
15
+ 所で感嘆符にだけHITすればよかったのでしょうか?
16
+
17
+ コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です