回答編集履歴
3
修正
answer
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
<class 'int'> 1000000
|
27
27
|
```
|
28
28
|
|
29
|
-
このとき論理和は数値の加算と同じです。
|
29
|
+
このとき~~論理和~~ビット和は数値の加算と同じです。
|
30
30
|
各要素の値は2進表記したとき桁が被らないよう選ばれているので、一意に分解できます。
|
31
31
|
```Python
|
32
32
|
>>> f'{re.ASCII + re.DOTALL:b}'
|
2
追記
answer
CHANGED
@@ -27,17 +27,19 @@
|
|
27
27
|
```
|
28
28
|
|
29
29
|
このとき論理和は数値の加算と同じです。
|
30
|
-
各要素の値は桁が被らないよう選ばれているので、一意に分解できます。
|
30
|
+
各要素の値は2進表記したとき桁が被らないよう選ばれているので、一意に分解できます。
|
31
31
|
```Python
|
32
32
|
>>> f'{re.ASCII + re.DOTALL:b}'
|
33
33
|
'100010000'
|
34
|
+
>>> f'{re.ASCII | re.DOTALL:b}'
|
35
|
+
'100010000'
|
34
36
|
```
|
35
37
|
|
36
38
|
---
|
37
39
|
> なぜ&でなくて|なのでしょうか。
|
38
40
|
|
39
41
|
前述したとおり、都合が良いからです。
|
40
|
-
またビットフラグは
|
42
|
+
またビットフラグは長く用いられているので、別の記号を用いると混乱を招きます。
|
41
43
|
|
42
44
|
> 新しい記法ではどのように書くのが好ましいのでしょうか?
|
43
45
|
|
1
追記
answer
CHANGED
@@ -31,4 +31,26 @@
|
|
31
31
|
```Python
|
32
32
|
>>> f'{re.ASCII + re.DOTALL:b}'
|
33
33
|
'100010000'
|
34
|
-
```
|
34
|
+
```
|
35
|
+
|
36
|
+
---
|
37
|
+
> なぜ&でなくて|なのでしょうか。
|
38
|
+
|
39
|
+
前述したとおり、都合が良いからです。
|
40
|
+
またビットフラグは古くから用いられているので、別の記号を用いると混乱を招きます。
|
41
|
+
|
42
|
+
> 新しい記法ではどのように書くのが好ましいのでしょうか?
|
43
|
+
|
44
|
+
ビットフラグではなく、キーワード引数として提供されるのを想定しているのではないでしょうか。
|
45
|
+
```Python
|
46
|
+
re.compile(r'h..e', ignore_case=True, dot_all=True) # 註:実際にはこのように書けません。
|
47
|
+
```
|
48
|
+
|
49
|
+
あるいはこのように正規表現文字列の中にフラグを埋め込むことができます。
|
50
|
+
```Python
|
51
|
+
re.compile(r'h..e', re.IGNORECASE | re.DOTALL) # これと
|
52
|
+
re.compile(r'(?is)h..e') # これは同じ
|
53
|
+
```
|
54
|
+
|
55
|
+
ただこれはこれで読みづらく浸透していない(ような気がする)ので、
|
56
|
+
ビットフラグを用いた、つまり古い書き方を引き続き用いても良いように思います。
|