回答編集履歴

3

テキスト修正

2020/03/08 04:02

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- サンプル#1
49
+ - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- **サンプル#1**
50
50
 
51
51
 
52
52
 
@@ -104,7 +104,7 @@
104
104
 
105
105
  ```
106
106
 
107
- - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- サンプル#2
107
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- **サンプル#2**
108
108
 
109
109
 
110
110
 
@@ -128,7 +128,7 @@
128
128
 
129
129
  ```
130
130
 
131
- - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- サンプル#3
131
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- **サンプル#3**
132
132
 
133
133
 
134
134
 
@@ -142,4 +142,4 @@
142
142
 
143
143
  ```
144
144
 
145
- - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- サンプル#4
145
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- **サンプル#4**

2

テキスト修正

2020/03/08 04:02

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -108,13 +108,13 @@
108
108
 
109
109
 
110
110
 
111
- 上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これキャプチャしてこなくてもよいので、`?:` を付加した
111
+ 上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これキャプチャしてこなくてもよい場合に、`?:` を付加した
112
112
 
113
113
 
114
114
 
115
115
  ```python3
116
116
 
117
- tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
117
+ tels = re.findall(u"^([電話番号]|電話)(?::?\s+)([0-9]+)", msg, flags=re.MULTILINE)
118
118
 
119
119
  ```
120
120
 

1

テキスト修正

2020/03/06 05:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434)
49
+ - **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- サンプル#1
50
50
 
51
51
 
52
52
 
@@ -57,3 +57,89 @@
57
57
 
58
58
 
59
59
  上記では、変数 `msg` に入ってくる、処理対象のテキスト全体を、ご質問の内容から想像して書いているので、実際のものと相違があれば、コメントからお知らせください。
60
+
61
+
62
+
63
+
64
+
65
+ ### 追記
66
+
67
+
68
+
69
+ > ?::? はどういう意味になるのでしょうか??
70
+
71
+
72
+
73
+ `?::?` の先頭2文字の `?:` はキャプチャしないグループ([Non-Capturing Groups](https://www.regular-expressions.info/brackets.html))です。 3文字目以降の`:?`は、コロン`:`の1文字が有るまたは無い、の意味です。
74
+
75
+
76
+
77
+ `?::?` の先頭2文字を除去して、単に `:?` として、以下
78
+
79
+
80
+
81
+ ```python3
82
+
83
+ tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
84
+
85
+ ```
86
+
87
+ のようにすると、 `(:?\s+)` もキャプチャされるので、
88
+
89
+
90
+
91
+ ```python3
92
+
93
+ tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
94
+
95
+ ```
96
+
97
+ によって取得される `tels` の内容は以下になります。
98
+
99
+
100
+
101
+ ```
102
+
103
+ [('電話', ': ', '08099999999'), ('[電話番号]', '\n', '08012345678')]
104
+
105
+ ```
106
+
107
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- サンプル#2
108
+
109
+
110
+
111
+ 上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これはキャプチャしてこなくてもよいので、`?:` を付加した
112
+
113
+
114
+
115
+ ```python3
116
+
117
+ tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
118
+
119
+ ```
120
+
121
+ とすると、`tels` の内容は以下になり、タプルの2番目の要素に、(コロンを含むときもある)空白文字の連続は、入ってこなくなります。
122
+
123
+
124
+
125
+ ```
126
+
127
+ [('電話', '08099999999'), ('[電話番号]', '08012345678')]
128
+
129
+ ```
130
+
131
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- サンプル#3
132
+
133
+
134
+
135
+ 上記の、サンプル#2 と サンプル#3の結果の違いが、キャプチャしないグループ `?:` の効果ですが、今あらためて見返すと、そもそもグループにしなければよかったので、以下で済みました。
136
+
137
+
138
+
139
+ ```python3
140
+
141
+ tels = re.findall(u"^([電話番号]|電話):?\s+([0-9]+)", msg, flags=re.MULTILINE)
142
+
143
+ ```
144
+
145
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- サンプル#4