回答編集履歴
3
テキスト修正
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
テキスト修正
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
テキスト修正
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
|