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

回答編集履歴

5

成形

2019/09/25 06:13

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -9,8 +9,7 @@
9
9
  matchは先頭から探索します。ですので、4から始まることはあり得ません。
10
10
  またできるだけ長くマッチしようとするので、小数点以下が途中で打ち切られることもありません。
11
11
 
12
- 途中から探索したい場合はre.searchを、
13
- 常に文字列全体とマッチしたい場合はre.fullmatchを使えます。
12
+ 途中から探索したい場合はre.searchを、常に文字列全体とマッチしたい場合はre.fullmatchを使えます。
14
13
  ただし今回の場合どれを選んでも結果は同じです。
15
14
 
16
15
  ---

4

追記

2019/09/25 06:13

投稿

LouiS0616
LouiS0616

スコア35678

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

3

追記

2019/09/25 06:12

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -4,4 +4,16 @@
4
4
  このマッチの、1 からパターン中のグループ数まで、全ての**サブグループ**を含むタプルを返します。
5
5
 
6
6
  ---
7
- なお m.group(0) とでもすれば、マッチした文字列全体が得られます。
7
+ なお m.group(0) とでもすれば、マッチした文字列全体が得られます。
8
+
9
+ ```Python
10
+ >>> pattern = re.compile(r'(\d+).(\d+)')
11
+ >>>
12
+ >>> m = pattern.match(r'24.1632')
13
+ >>> for i in range(pattern.groups+1):
14
+ ... print(i, m.group(i))
15
+ ...
16
+ 0 24.1632
17
+ 1 24
18
+ 2 1632
19
+ ```

2

追記

2019/09/25 06:09

投稿

LouiS0616
LouiS0616

スコア35678

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

1

追記

2019/09/25 06:04

投稿

LouiS0616
LouiS0616

スコア35678

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