回答編集履歴
3
テキスト修正
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
- **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- サンプル#1
|
25
|
+
- **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- **サンプル#1**
|
26
26
|
|
27
27
|
|
28
28
|
|
@@ -51,7 +51,7 @@
|
|
51
51
|
```
|
52
52
|
[('電話', ': ', '08099999999'), ('[電話番号]', '\n', '08012345678')]
|
53
53
|
```
|
54
|
-
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- サンプル#2
|
54
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- **サンプル#2**
|
55
55
|
|
56
56
|
上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これをキャプチャしてこなくてもよい場合に、`?:` を付加した
|
57
57
|
|
@@ -63,11 +63,11 @@
|
|
63
63
|
```
|
64
64
|
[('電話', '08099999999'), ('[電話番号]', '08012345678')]
|
65
65
|
```
|
66
|
-
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- サンプル#3
|
66
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- **サンプル#3**
|
67
67
|
|
68
68
|
上記の、サンプル#2 と サンプル#3の結果の違いが、キャプチャしないグループ `?:` の効果ですが、今あらためて見返すと、そもそもグループにしなければよかったので、以下で済みました。
|
69
69
|
|
70
70
|
```python3
|
71
71
|
tels = re.findall(u"^([電話番号]|電話):?\s+([0-9]+)", msg, flags=re.MULTILINE)
|
72
72
|
```
|
73
|
-
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- サンプル#4
|
73
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- **サンプル#4**
|
2
テキスト修正
answer
CHANGED
@@ -53,10 +53,10 @@
|
|
53
53
|
```
|
54
54
|
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- サンプル#2
|
55
55
|
|
56
|
-
上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これ
|
56
|
+
上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これをキャプチャしてこなくてもよい場合に、`?:` を付加した
|
57
57
|
|
58
58
|
```python3
|
59
|
-
tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
|
59
|
+
tels = re.findall(u"^([電話番号]|電話)(?::?\s+)([0-9]+)", msg, flags=re.MULTILINE)
|
60
60
|
```
|
61
61
|
とすると、`tels` の内容は以下になり、タプルの2番目の要素に、(コロンを含むときもある)空白文字の連続は、入ってこなくなります。
|
62
62
|
|
1
テキスト修正
answer
CHANGED
@@ -22,9 +22,52 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
- **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434)
|
25
|
+
- **動作確認用 Repl.it:** [https://repl.it/@jun68ykt/Q245434](https://repl.it/@jun68ykt/Q245434) --- サンプル#1
|
26
26
|
|
27
27
|
|
28
28
|
|
29
29
|
|
30
|
-
上記では、変数 `msg` に入ってくる、処理対象のテキスト全体を、ご質問の内容から想像して書いているので、実際のものと相違があれば、コメントからお知らせください。
|
30
|
+
上記では、変数 `msg` に入ってくる、処理対象のテキスト全体を、ご質問の内容から想像して書いているので、実際のものと相違があれば、コメントからお知らせください。
|
31
|
+
|
32
|
+
|
33
|
+
### 追記
|
34
|
+
|
35
|
+
> ?::? はどういう意味になるのでしょうか??
|
36
|
+
|
37
|
+
`?::?` の先頭2文字の `?:` はキャプチャしないグループ([Non-Capturing Groups](https://www.regular-expressions.info/brackets.html))です。 3文字目以降の`:?`は、コロン`:`の1文字が有るまたは無い、の意味です。
|
38
|
+
|
39
|
+
`?::?` の先頭2文字を除去して、単に `:?` として、以下
|
40
|
+
|
41
|
+
```python3
|
42
|
+
tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
|
43
|
+
```
|
44
|
+
のようにすると、 `(:?\s+)` もキャプチャされるので、
|
45
|
+
|
46
|
+
```python3
|
47
|
+
tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
|
48
|
+
```
|
49
|
+
によって取得される `tels` の内容は以下になります。
|
50
|
+
|
51
|
+
```
|
52
|
+
[('電話', ': ', '08099999999'), ('[電話番号]', '\n', '08012345678')]
|
53
|
+
```
|
54
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454342](https://repl.it/@jun68ykt/Q2454342) --- サンプル#2
|
55
|
+
|
56
|
+
上記の結果として得られるリスト`tels` の要素であるタプルの2番目の要素に、`(:?\s+)` にマッチした部分が入ってきますが、これはキャプチャしてこなくてもよいので、`?:` を付加した
|
57
|
+
|
58
|
+
```python3
|
59
|
+
tels = re.findall(u"^([電話番号]|電話)(:?\s+)([0-9]+)", msg, flags=re.MULTILINE)
|
60
|
+
```
|
61
|
+
とすると、`tels` の内容は以下になり、タプルの2番目の要素に、(コロンを含むときもある)空白文字の連続は、入ってこなくなります。
|
62
|
+
|
63
|
+
```
|
64
|
+
[('電話', '08099999999'), ('[電話番号]', '08012345678')]
|
65
|
+
```
|
66
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454343](https://repl.it/@jun68ykt/Q2454343) --- サンプル#3
|
67
|
+
|
68
|
+
上記の、サンプル#2 と サンプル#3の結果の違いが、キャプチャしないグループ `?:` の効果ですが、今あらためて見返すと、そもそもグループにしなければよかったので、以下で済みました。
|
69
|
+
|
70
|
+
```python3
|
71
|
+
tels = re.findall(u"^([電話番号]|電話):?\s+([0-9]+)", msg, flags=re.MULTILINE)
|
72
|
+
```
|
73
|
+
- **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q2454344](https://repl.it/@jun68ykt/Q2454344) --- サンプル#4
|