回答編集履歴

2

修正

2019/10/04 01:59

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -8,15 +8,17 @@
8
8
 
9
9
  for src in [a, b, c]:
10
10
 
11
- ret = re.search(r':([A-Z;]+)\|', src)
11
+ ret = re.search(r'([a-z]+):([A-Z;]+)\|', src)
12
12
 
13
13
  if not ret:
14
14
 
15
15
  continue
16
16
 
17
-
17
+
18
18
 
19
- print(ret.group(1).split(';'))
19
+ ret = [ret.group(1), *ret.group(2).split(';')]
20
+
21
+ print(ret)
20
22
 
21
23
  ```
22
24
 
@@ -28,7 +30,7 @@
28
30
 
29
31
  for src in [a, b, c]:
30
32
 
31
- ret = re.findall(r'[:;]([A-Z]+)(?=[;|])', src)
33
+ ret = re.findall(r'[:;]?([a-zA-Z]+)(?=[:;|])', src)
32
34
 
33
35
  print(ret)
34
36
 
@@ -42,7 +44,7 @@
42
44
 
43
45
  for src in [a, b, c]:
44
46
 
45
- ret = re.split(r'[:;|]', src)[1:-1]
47
+ ret = re.split(r'[:;|]', src)[:-1]
46
48
 
47
49
  print(ret)
48
50
 

1

追記

2019/10/04 01:59

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -19,3 +19,31 @@
19
19
  print(ret.group(1).split(';'))
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ 仕様に依っては次のように書いても良いでしょう。
26
+
27
+ ```Python
28
+
29
+ for src in [a, b, c]:
30
+
31
+ ret = re.findall(r'[:;]([A-Z]+)(?=[;|])', src)
32
+
33
+ print(ret)
34
+
35
+ ```
36
+
37
+
38
+
39
+ あるいは、これくらい単純化できるかもしれません。
40
+
41
+ ```Python
42
+
43
+ for src in [a, b, c]:
44
+
45
+ ret = re.split(r'[:;|]', src)[1:-1]
46
+
47
+ print(ret)
48
+
49
+ ```