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

回答編集履歴

4

コードの修正

2019/11/14 13:37

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -32,13 +32,13 @@
32
32
 
33
33
  pattern = re.compile(r"(\d{4})/(\d{1,2})/(\d{1,2}) (([月火水木金土日]))")
34
34
  if m := pattern.fullmatch(src):
35
- y, m, d, w = m.groups()
35
+ year, month, day, weekday = m.groups()
36
- print(y, m, d, w)
36
+ print(year, month, day, weekday)
37
37
  else:
38
38
  print('マッチ失敗')
39
39
  ```
40
40
 
41
- **実行結果** [Wandbox](https://wandbox.org/permlink/H2EJfjfAKmQcVPjQ)
41
+ **実行結果** [Wandbox](https://wandbox.org/permlink/aE9WntA5y2B8yCuo)
42
42
  ```
43
43
  2019 9 3 火
44
44
  ```

3

追記

2019/11/14 13:37

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -12,4 +12,33 @@
12
12
  0. {1}は無駄なので、適当に書き直しています。
13
13
 
14
14
  ![正規表現の可視化](bb432596d2bf9ac69666e2dac309ce9f.png)
15
- [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/UF1ZR39_Hfi_eIvv)
15
+ [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/UF1ZR39_Hfi_eIvv)
16
+
17
+ おまけ
18
+ ---
19
+ 後から各要素を取り出したいなら、キャプチャを取るのが便利です。
20
+ ```Python
21
+ r"(\d{4})/(\d{1,2})/(\d{1,2}) (([月火水木金土日]))"
22
+ ```
23
+
24
+ ![正規表現の可視化](dc78693a658f2c9766e9472af81bc94a.png)
25
+ [Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.](https://www.debuggex.com/r/cMOW73rdZJ5SsySL)
26
+
27
+ 実際のコードではこんなふうに使います。
28
+ ```Python
29
+ import re
30
+
31
+ src = '2019/9/3 (火)'
32
+
33
+ pattern = re.compile(r"(\d{4})/(\d{1,2})/(\d{1,2}) (([月火水木金土日]))")
34
+ if m := pattern.fullmatch(src):
35
+ y, m, d, w = m.groups()
36
+ print(y, m, d, w)
37
+ else:
38
+ print('マッチ失敗')
39
+ ```
40
+
41
+ **実行結果** [Wandbox](https://wandbox.org/permlink/H2EJfjfAKmQcVPjQ)
42
+ ```
43
+ 2019 9 3 火
44
+ ```

2

追記

2019/11/14 13:34

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -9,4 +9,7 @@
9
9
 
10
10
  上記の点に加え、次の箇所も修正しています。
11
11
  0. 半角括弧でのグループ化は、少なくとも現段階では不要なので排除しています。
12
- 0. {1}は無駄なので、適当に書き直しています。
12
+ 0. {1}は無駄なので、適当に書き直しています。
13
+
14
+ ![正規表現の可視化](bb432596d2bf9ac69666e2dac309ce9f.png)
15
+ [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

スコア35678

answer CHANGED
@@ -5,4 +5,8 @@
5
5
  よって、次のように書けます。
6
6
  ```Python
7
7
  r"\d{4}/\d{1,2}/\d{1,2} ([月火水木金土日])"
8
- ```
8
+ ```
9
+
10
+ 上記の点に加え、次の箇所も修正しています。
11
+ 0. 半角括弧でのグループ化は、少なくとも現段階では不要なので排除しています。
12
+ 0. {1}は無駄なので、適当に書き直しています。