回答編集履歴
3
a
answer
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
これが一番シンプルですね.マッチした部分を空文字列に置換するだけです.
|
2
2
|
|
3
3
|
```php
|
4
|
-
$title = preg_replace('/(?:このような内容です。|上記となっています。).*
|
4
|
+
$title = preg_replace('/(?:このような内容です。|上記となっています。).*/s', '', $title);
|
5
5
|
```
|
6
6
|
|
7
|
-
- 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.
|
7
|
+
- 後ろが`.*` `.+` `.*+` `.++`のいずれかであれば,前で`^(.*?)` `^(.+?)`をマッチングさせる必要はないです.
|
8
8
|
- `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
|
9
9
|
|
10
10
|
|
2
a
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
$title = preg_replace('/(?:このような内容です。|上記となっています。).*+/s', '', $title);
|
5
5
|
```
|
6
6
|
|
7
|
-
- 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.
|
7
|
+
- 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.
|
8
8
|
- `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
|
9
9
|
|
10
10
|
|
1
a
answer
CHANGED
@@ -4,4 +4,10 @@
|
|
4
4
|
$title = preg_replace('/(?:このような内容です。|上記となっています。).*+/s', '', $title);
|
5
5
|
```
|
6
6
|
|
7
|
-
後ろ
|
7
|
+
- 後ろが`.*+` `.*`のいずれかであれば,前で`^(.*?)`をマッチングさせる必要はないです.**こいつらは必ず末尾まで全部オフセットを食いつぶしてくれます.**
|
8
|
+
- `.`を任意の1バイトにマッチさせたい場合`s`修飾子は必須なので付け忘れずに.
|
9
|
+
|
10
|
+
|
11
|
+
【蛇足】
|
12
|
+
|
13
|
+
何千回もループしないかぎりほとんど差はでませんが,`.*?` `.+?` は**1オフセットごとに後ろをチェックする**ため速度低下を招きます.出来るだけ使用は控えめに.また今回は大丈夫ですが,バックトラックが発生するケースでは`.*` `.+`も同様です.バックトラックがどうしても動作上必要な場合はしょうがないですが,不必要な場合は `.*+` `.++` にして抑制をしておくと動作速度が向上することがあります.
|