回答編集履歴

4

コードの修正

2019/11/14 13:37

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -66,9 +66,9 @@
66
66
 
67
67
  if m := pattern.fullmatch(src):
68
68
 
69
- y, m, d, w = m.groups()
69
+ year, month, day, weekday = m.groups()
70
70
 
71
- print(y, m, d, w)
71
+ print(year, month, day, weekday)
72
72
 
73
73
  else:
74
74
 
@@ -78,7 +78,7 @@
78
78
 
79
79
 
80
80
 
81
- **実行結果** [Wandbox](https://wandbox.org/permlink/H2EJfjfAKmQcVPjQ)
81
+ **実行結果** [Wandbox](https://wandbox.org/permlink/aE9WntA5y2B8yCuo)
82
82
 
83
83
  ```
84
84
 

3

追記

2019/11/14 13:37

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -27,3 +27,61 @@
27
27
  ![正規表現の可視化](bb432596d2bf9ac69666e2dac309ce9f.png)
28
28
 
29
29
  [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/UF1ZR39_Hfi_eIvv)
30
+
31
+
32
+
33
+ おまけ
34
+
35
+ ---
36
+
37
+ 後から各要素を取り出したいなら、キャプチャを取るのが便利です。
38
+
39
+ ```Python
40
+
41
+ r"(\d{4})/(\d{1,2})/(\d{1,2}) (([月火水木金土日]))"
42
+
43
+ ```
44
+
45
+
46
+
47
+ ![正規表現の可視化](dc78693a658f2c9766e9472af81bc94a.png)
48
+
49
+ [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/cMOW73rdZJ5SsySL)
50
+
51
+
52
+
53
+ 実際のコードではこんなふうに使います。
54
+
55
+ ```Python
56
+
57
+ import re
58
+
59
+
60
+
61
+ src = '2019/9/3 (火)'
62
+
63
+
64
+
65
+ pattern = re.compile(r"(\d{4})/(\d{1,2})/(\d{1,2}) (([月火水木金土日]))")
66
+
67
+ if m := pattern.fullmatch(src):
68
+
69
+ y, m, d, w = m.groups()
70
+
71
+ print(y, m, d, w)
72
+
73
+ else:
74
+
75
+ print('マッチ失敗')
76
+
77
+ ```
78
+
79
+
80
+
81
+ **実行結果** [Wandbox](https://wandbox.org/permlink/H2EJfjfAKmQcVPjQ)
82
+
83
+ ```
84
+
85
+ 2019 9 3 火
86
+
87
+ ```

2

追記

2019/11/14 13:34

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -21,3 +21,9 @@
21
21
  0. 半角括弧でのグループ化は、少なくとも現段階では不要なので排除しています。
22
22
 
23
23
  0. {1}は無駄なので、適当に書き直しています。
24
+
25
+
26
+
27
+ ![正規表現の可視化](bb432596d2bf9ac69666e2dac309ce9f.png)
28
+
29
+ [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/UF1ZR39_Hfi_eIvv)

1

追記

2019/11/14 13:28

投稿

LouiS0616
LouiS0616

スコア35668

test CHANGED
@@ -13,3 +13,11 @@
13
13
  r"\d{4}/\d{1,2}/\d{1,2} ([月火水木金土日])"
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ 上記の点に加え、次の箇所も修正しています。
20
+
21
+ 0. 半角括弧でのグループ化は、少なくとも現段階では不要なので排除しています。
22
+
23
+ 0. {1}は無駄なので、適当に書き直しています。