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

回答編集履歴

3

修正

2020/02/25 23:29

投稿

LouiS0616
LouiS0616

スコア35678

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

追記

2020/02/25 23:29

投稿

LouiS0616
LouiS0616

スコア35678

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

追記

2020/02/25 11:34

投稿

LouiS0616
LouiS0616

スコア35678

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
+ ビットフラグを用いた、つまり古い書き方を引き続き用いても良いように思います。