回答編集履歴

5

成形

2019/09/25 06:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -20,9 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 途中から探索したい場合はre.searchを、
24
-
25
- 常に文字列全体とマッチしたい場合はre.fullmatchを使えます。
23
+ 途中から探索したい場合はre.searchを、常に文字列全体とマッチしたい場合はre.fullmatchを使えます。
26
24
 
27
25
  ただし今回の場合どれを選んでも結果は同じです。
28
26
 

4

追記

2019/09/25 06:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -5,6 +5,26 @@
5
5
  > #####Match.groups(default=None)
6
6
 
7
7
  このマッチの、1 からパターン中のグループ数まで、全ての**サブグループ**を含むタプルを返します。
8
+
9
+
10
+
11
+ ---
12
+
13
+ > 私が考えた結果は ('24.1', '24.1632' , '4.1', '4.163', ...)
14
+
15
+
16
+
17
+ matchは先頭から探索します。ですので、4から始まることはあり得ません。
18
+
19
+ またできるだけ長くマッチしようとするので、小数点以下が途中で打ち切られることもありません。
20
+
21
+
22
+
23
+ 途中から探索したい場合はre.searchを、
24
+
25
+ 常に文字列全体とマッチしたい場合はre.fullmatchを使えます。
26
+
27
+ ただし今回の場合どれを選んでも結果は同じです。
8
28
 
9
29
 
10
30
 

3

追記

2019/09/25 06:12

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -11,3 +11,27 @@
11
11
  ---
12
12
 
13
13
  なお m.group(0) とでもすれば、マッチした文字列全体が得られます。
14
+
15
+
16
+
17
+ ```Python
18
+
19
+ >>> pattern = re.compile(r'(\d+).(\d+)')
20
+
21
+ >>>
22
+
23
+ >>> m = pattern.match(r'24.1632')
24
+
25
+ >>> for i in range(pattern.groups+1):
26
+
27
+ ... print(i, m.group(i))
28
+
29
+ ...
30
+
31
+ 0 24.1632
32
+
33
+ 1 24
34
+
35
+ 2 1632
36
+
37
+ ```

2

追記

2019/09/25 06:09

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,3 +1,13 @@
1
1
  本来なら \d+.\d+ で充分なところ、 () でキャプチャを取っているからです。
2
2
 
3
+ このことはご参照のリファレンスにも、また違った表現で書いてありますね。
4
+
5
+ > #####Match.groups(default=None)
6
+
7
+ このマッチの、1 からパターン中のグループ数まで、全ての**サブグループ**を含むタプルを返します。
8
+
9
+
10
+
11
+ ---
12
+
3
13
  なお m.group(0) とでもすれば、マッチした文字列全体が得られます。

1

追記

2019/09/25 06:04

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,3 +1,3 @@
1
- () でキャプチャを取っているからです。
1
+ 本来なら \d+.\d+ で充分なところ、 () でキャプチャを取っているからです。
2
2
 
3
- m.group(0) とでもすれば、マッチした文字列全体が得られます。
3
+ なお m.group(0) とでもすれば、マッチした文字列全体が得られます。