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

回答編集履歴

2

追記

2018/09/29 14:26

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -13,4 +13,11 @@
13
13
  また、フラグを正規表現に埋め込むこともできます。
14
14
  ```Python
15
15
  re.sub(r'(?s)`{3}.+`{3}', '', body)
16
- ```
16
+ ```
17
+
18
+ コメントを受けて
19
+ ---
20
+ > 囲ってない部分まで削除されてしまいます。
21
+
22
+ `.+`ではなく`.+?`を使ってみてください。
23
+ 前者が貪欲的なマッチングを試みるのに対して、後者は最左最短一致を試みます。

1

追記

2018/09/29 14:26

投稿

LouiS0616
LouiS0616

スコア35676

answer CHANGED
@@ -1,5 +1,16 @@
1
1
  改行も含め`.`でマッチしたい場合は、re.DOTALLフラグを指定します。
2
+
3
+ > .
4
+ (ドット) デフォルトのモードでは改行以外の任意の文字にマッチします。 DOTALL フラグが指定されていれば改行も含むすべての文字にマッチします。
5
+
6
+ 引用元: [Python 標準ライブラリ » re — 正規表現操作 » 正規表現のシンタックス](https://docs.python.jp/3/library/re.html#regular-expression-syntax)
7
+
2
8
  ```Python
3
9
  pattern = re.compile(r'`{3}.+`{3}', flags=re.DOTALL)
4
10
  pattern.sub('', body)
11
+ ```
12
+
13
+ また、フラグを正規表現に埋め込むこともできます。
14
+ ```Python
15
+ re.sub(r'(?s)`{3}.+`{3}', '', body)
5
16
  ```