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

回答編集履歴

2

修正

2019/10/04 01:59

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,23 +3,24 @@
3
3
  - 次に ; で分割
4
4
  ```Python
5
5
  for src in [a, b, c]:
6
- ret = re.search(r':([A-Z;]+)\|', src)
6
+ ret = re.search(r'([a-z]+):([A-Z;]+)\|', src)
7
7
  if not ret:
8
8
  continue
9
-
9
+
10
- print(ret.group(1).split(';'))
10
+ ret = [ret.group(1), *ret.group(2).split(';')]
11
+ print(ret)
11
12
  ```
12
13
 
13
14
  仕様に依っては次のように書いても良いでしょう。
14
15
  ```Python
15
16
  for src in [a, b, c]:
16
- ret = re.findall(r'[:;]([A-Z]+)(?=[;|])', src)
17
+ ret = re.findall(r'[:;]?([a-zA-Z]+)(?=[:;|])', src)
17
18
  print(ret)
18
19
  ```
19
20
 
20
21
  あるいは、これくらい単純化できるかもしれません。
21
22
  ```Python
22
23
  for src in [a, b, c]:
23
- ret = re.split(r'[:;|]', src)[1:-1]
24
+ ret = re.split(r'[:;|]', src)[:-1]
24
25
  print(ret)
25
26
  ```

1

追記

2019/10/04 01:59

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,4 +8,18 @@
8
8
  continue
9
9
 
10
10
  print(ret.group(1).split(';'))
11
+ ```
12
+
13
+ 仕様に依っては次のように書いても良いでしょう。
14
+ ```Python
15
+ for src in [a, b, c]:
16
+ ret = re.findall(r'[:;]([A-Z]+)(?=[;|])', src)
17
+ print(ret)
18
+ ```
19
+
20
+ あるいは、これくらい単純化できるかもしれません。
21
+ ```Python
22
+ for src in [a, b, c]:
23
+ ret = re.split(r'[:;|]', src)[1:-1]
24
+ print(ret)
11
25
  ```