Well, let's take a few stabs at it.
It seems like we definitely want 0 through 9+
to get the first part of any phone number.
What about this regular expression?
We have 0 through 9+, and then as many times as you like
we have a hyphen, and then 0 through 9+ again
as kind of a group.
This actually works quite well.
However, if we were to put a star here instead of a +,
this one accepts -6 by just skipping this part
and doing this part once, -6, and then we're done.
We don't like this.
And as we've mentioned, regular expressions admit room for creativity.
What if I want to do this interesting grouping at the beginning?
What if I say you can have as many of the 08-78-88- things as you want
as long as you end with some final numbers?
This one also works.
You may remember the hyphenated word problem we had from before.
This hyphenated phone number problem is actually quite similar,
but now that we know how to do grouping
with parentheses, it's much easier to solve.
Bhé, diamo qualche spallata al problema.
Sembra che vogliamo sicuramente '[0-9]+'
per avere la prima parte di questo numero.
Cosa pensate di questa espressione regolare?
Abbiamo [da 0 a 9]+ , e poi tutte le volte che volete
un trattino, e poi [da 0 a 9]+ ancora,
entrambi raccolti dalle parentesi.
Questo funziona abbastanza bene.
Però, se mettessimo una stella (*) al posto del più (+) ,
acceetterebbe '-6' saltando questa parte
ed eseguirebbe questa parte una volta, '-6' , e finirebbe.
Questo non ci piace.
Come abbiamo detto, le espressioni regolari lasciano spazio alla creatività.
Cosa succederebbe se aggiungessi qualche parentesi nella parte iniziale?
Se volessi avere quanti 08-78-88- voglio
fino ad arrivare ad una certa cifra sul finale?
Anche questa funziona.
Ricordate il problema delle lettere con trattini trattato in precedenza.
Questo numero con trattini è molto simile,
ma adesso che sappiamo come raggruppare
con le parentesi, è molto più facile risolverlo.
いくつか例を出してみましょう
どの国の電話番号でも
1桁目は数字で始まります
こんな正規表現はどうですか？
ここには［0－9］＋がありハイフンのあとに ［0－9］＋をグループとして何個でも受け入れます
そしてハイフンを入れたらもう一度［0－9］＋を
グループの一部として入れます
この正規表現はうまくいくはずです
しかしこの＋部分に＊を入れると
この部分がスキップできるので 右側のグループを1度通り
“－6”が受理されてしまいます
これではダメですね
正規表現はクリエイティブに作ることができます
このグルーピングを最初に持ってきて
末尾が数字で終わっているのであれば 番号とハイフンを繰り返し使っても
受理できるように設定できます
これでもうまくいくはずです
ハイフンを含む言葉の問題は説明しましたね
ハイフン有りの電話番号にも似た問題がありますが
今なら丸括弧でグループ分けできるので
簡単に問題解決できました
Bem, vamos dar alguns chutes.
É claro que queremos acitar [0-9]+
para pegar a primeira parte do número.
O que você acha desta expressão regular?
Temos [0-9]+, e então, quantas vezes quisermos,
temos um hífen, seguido de [0-9]+ de novo --
um tipo de grupo.
Isso de fato funciona.
Entretanto, se colocamos * aqui, no lugar de +,
isso aceita -6, simplesmente pulando esta parte
e usando esta parte uma vez: -6, e pronto.
não queremos isso.
Como eu já disse, definir expressões regulares requer engenhosidade.
E se fizermos este agrupamento no início?
E se eu disser que você pode ter 08-78-88- , tantas coisas desse tipo quantas quiser,
desde que você termine com número no final?
Isso também funciona.
Você deve se lembrar do problema de palavras com hífen que vimos antes.
Este problema de números de telefone com hífens é bastante parecido.
Agora que sabemos como agrupar,
usando parênteses, ficou muito mais fácil de resolver.
好的，让我们花点时间看看
看起来我们肯定要[0-9]+
来获取任何电话号码的第一部分
这个正则表达式怎样呢？
我们有了[0-9]，可以重复多次
接着是连字符，再一个[0-9]+
组合在一起
实际上这个能工作得很好
可是，如果我们将+号替换成*号
这个正则表达式会接受-6，它把这一部分去掉
只匹配这部分一次，-6，这就结束了
我们不要这样
正如我们提过的，编写正则表达式是一个很有创意的过程
如果我把前面的这一部分组合在一起，会怎样呢？
如果我假设你的号码里有很多如08-78-88之类的东东
并以一些数字结尾，又怎样呢？
这个同样能起作用
你可能记得我们之前遇到的连字符隔开的单词的问题
这个连字符隔开的电话号码问题实际上是很类似的
但既然我们知道了如何使用括号来
分组，那解决起来就容易得多了