回答編集履歴

3

a

2016/03/31 19:55

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  ```php
6
6
 
7
- $title = preg_replace('/(?:このような内容です。|上記となっています。).*+/s', '', $title);
7
+ $title = preg_replace('/(?:このような内容です。|上記となっています。).*/s', '', $title);
8
8
 
9
9
  ```
10
10
 
11
11
 
12
12
 
13
- - 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.
13
+ - 後ろが`.*` `.+` `.*+` `.++`のいずれかであれば,前で`^(.*?)` `^(.+?)`をマッチングさせる必要はないです.
14
14
 
15
15
  - `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
16
16
 

2

a

2016/03/31 19:55

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- - 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.**こいつらは必ず末尾まで全部オフセットを食いつぶしてくれます.**
13
+ - 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.
14
14
 
15
15
  - `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
16
16
 

1

a

2016/03/31 19:44

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -10,4 +10,16 @@
10
10
 
11
11
 
12
12
 
13
- 後ろ`.*?`ではなく**`.*+`か`.*`**にしておけば,前で`^(.*?)`をマッチングさせる必要はないです.必ずこいつらは末尾まで全部オフセットを食いつぶしてくれます..あと`.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
13
+ - 後ろ`.*+` `.*`のいずれであれば,前で`^(.*?)`をマッチングさせる必要はないです.**こいつらは必ず末尾まで全部オフセットを食いつぶしてくれます.**
14
+
15
+ - `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
16
+
17
+
18
+
19
+
20
+
21
+ 【蛇足】
22
+
23
+
24
+
25
+ 何千回もループしないかぎりほとんど差はでませんが,`.*?` `.+?` は**1オフセットごとに後ろをチェックする**ため速度低下を招きます.出来るだけ使用は控えめに.また今回は大丈夫ですが,バックトラックが発生するケースでは`.*` `.+`も同様です.バックトラックがどうしても動作上必要な場合はしょうがないですが,不必要な場合は `.*+` `.++` にして抑制をしておくと動作速度が向上することがあります.