質問編集履歴
3
タイトル打ち消し線テストロールバック
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
reモジュールでの複数の
|
1
|
+
reモジュールでの複数の~~コンパイルフラグ~~ビットフラグの記法と、~~論理和~~ビット和
|
body
CHANGED
File without changes
|
2
タイトル打ち消し線テスト
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
reモジュールでの複数の
|
1
|
+
reモジュールでの複数の<del>コンパイルフラグ</del>ビットフラグの記法と、<del>論理和</del>ビット和
|
body
CHANGED
File without changes
|
1
表題の修正と解決後記
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
reモジュールでの複数のコンパイルフラグの記法と論理和
|
1
|
+
reモジュールでの複数の~~コンパイルフラグ~~ビットフラグの記法と、~~論理和~~ビット和
|
body
CHANGED
@@ -31,4 +31,25 @@
|
|
31
31
|
**2.**
|
32
32
|
> この記法は、初期のPythonから引き継いだ若干**時代遅れ**のものです。
|
33
33
|
|
34
|
-
について、では新しい記法ではどのように書くのが好ましいのでしょうか?
|
34
|
+
について、では新しい記法ではどのように書くのが好ましいのでしょうか?
|
35
|
+
|
36
|
+
---
|
37
|
+
|
38
|
+
---
|
39
|
+
### 解決後記、皆様御回答ありがとうございます
|
40
|
+
|
41
|
+
まとめ
|
42
|
+
- re.IGNORECASE、re.DOTALL、re.VERBOSEなどはビットフラグ。
|
43
|
+
- `|`はビット和演算子。
|
44
|
+
- ビット演算子は**2進数表現の各桁同士に対して**ブール演算を行う。
|
45
|
+
|
46
|
+
2進数を数値ではなく大量のON/OFFスイッチが並んでいると捉えると、
|
47
|
+
何故なんのためにビット演算をするのか突然理解できました。
|
48
|
+
つまり大量の0が並ぶ中唯一何桁目が1なのかでフラグが立つ/立たないを区別しているだけの記号なのであって、
|
49
|
+
`RegexFlag.VERBOSE`が64であるとか`RegexFlag.IGNORECASE`が2であるとか、
|
50
|
+
10進数に直すと結果的にそうなっているだけで、数値の大小自体に優劣等の特別な意味合いがあるわけではないのですね。
|
51
|
+
|
52
|
+
以下に参考にしたソースを付記します
|
53
|
+
- [BitwiseOperators](https://wiki.python.org/moin/BitwiseOperators)
|
54
|
+
- [バージョン 3.6 で変更: フラグ定数は、enum.IntFlag のサブクラスである RegexFlag のインスタンスになりました。](https://docs.python.org/ja/3/library/re.html?highlight=re%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB#module-contents)
|
55
|
+
- [`(?aiLmsux)`](https://docs.python.org/ja/3/library/re.html?highlight=re%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB#regular-expression-syntax)
|