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

回答編集履歴

3

表現修正

2015/09/30 11:54

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -7,4 +7,6 @@
7
7
  //teratail上での表示が壊れるので、?<![!?] の!と[の間にスペースを入れています。
8
8
  ```
9
9
  所で感嘆符にだけHITすればよかったのでしょうか?
10
- コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です
10
+ コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です
11
+ 単独の感嘆符が存在するかどうかを判定ですだけならいいのですが、
12
+ HITする部分を抽出して処理する場合不十分かも知れません

2

表示化け対応

2015/09/30 11:54

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,9 +1,10 @@
1
1
  否定先読み、否定戻り読みを使ってこういうのどうでしょう?
2
2
  ```
3
3
  <?php
4
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
4
+ if (preg_match('/(?<! [!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
5
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
5
+ if (preg_match('/(?<! [!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
6
6
  ?>
7
+ //teratail上での表示が壊れるので、?<![!?] の!と[の間にスペースを入れています。
7
8
  ```
8
9
  所で感嘆符にだけHITすればよかったのでしょうか?
9
10
  コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です

1

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

2015/09/30 11:49

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -1,17 +1,9 @@
1
1
  否定先読み、否定戻り読みを使ってこういうのどうでしょう?
2
2
  ```
3
3
  <?php
4
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) {
4
+ if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!!')) echo '1にマッチしました。';
5
- echo 'マッチしました。';
6
- } else {
7
- echo 'マッチしませんでした。';
8
- }
9
-
10
-
11
- if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) {
5
+ if (preg_match('/(?<![!?])[!?](?![!?])/', 'あいうえお!')) echo '2にマッチしました。';
12
- echo 'マッチしました。';
13
- } else {
14
- echo 'マッチしませんでした。';
15
- }
16
6
  ?>
17
- ```
7
+ ```
8
+ 所で感嘆符にだけHITすればよかったのでしょうか?
9
+ コード中の2でHITしているのは「あいうえお!」ではなくて、「!」です