回答編集履歴
3
追記
answer
CHANGED
|
@@ -7,4 +7,11 @@
|
|
|
7
7
|
- `>`以外の任意の文字を (`[^>]`)
|
|
8
8
|
- 0回以上、できるだけ短くマッチ (`*?`)
|
|
9
9
|
|
|
10
|
-
`*?`や`+?`は**最短
|
|
10
|
+
`*?`や`+?`は**最短マッチ**だとか**最左最短マッチ**だとか**非貪欲マッチ**だとか呼ばれるものです。
|
|
11
|
+
Pythonのドキュメントには次のようにあります。
|
|
12
|
+
> #####*?, +?, ??
|
|
13
|
+
'*' 、 '+' 、 '?' といった修飾子は、すべて 貪欲 (greedy) マッチ、すなわちできるだけ多くのテキストにマッチするようになっています。時にはこの動作が望ましくない場合もあります。例えば正規表現 <.*> を '<a> b <c>' にマッチさせると、 '<a>' だけにマッチするのではなく全文字列にマッチしてしまいます。 ? を修飾子の後に追加すると、 非貪欲 (non-greedy) あるいは 最小一致 (minimal) のマッチになり、できるだけ 少ない 文字数のマッチになります。例えば正規表現 <.*?> を使うと '<a>' だけにマッチします。
|
|
14
|
+
|
|
15
|
+
引用元: [Python 標準ライブラリ » re — 正規表現操作](https://docs.python.jp/3/library/re.html)
|
|
16
|
+
|
|
17
|
+
同じような例が挙げられていますね。
|
2
誤字
answer
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
- `>`以外の任意の文字を (`[^>]`)
|
|
8
8
|
- 0回以上、できるだけ短くマッチ (`*?`)
|
|
9
9
|
|
|
10
|
-
`*?`や`+?`は**最短一致**だとか**
|
|
10
|
+
`*?`や`+?`は**最短一致**だとか**最左最短一致**だとか呼ばれるものです。
|
1
リンクの変更
answer
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
正規表現を図示できるサイトがあります。
|
|
2
2
|

|
|
3
|
-
[Debuggex](https://www.debuggex.com/)
|
|
3
|
+
[Debuggex](https://www.debuggex.com/r/FJ5BhMbCFvDN5xQe)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
実際ややこしいのは `[^>]*?` の部分だけで、これは次のように読みます。
|
|
7
7
|
- `>`以外の任意の文字を (`[^>]`)
|
|
8
|
-
- 0回以上、できるだけ短くマッチ (`*?`)
|
|
8
|
+
- 0回以上、できるだけ短くマッチ (`*?`)
|
|
9
|
+
|
|
10
|
+
`*?`や`+?`は**最短一致**だとか**再左最短一致**だとか呼ばれるものです。
|