2016-04-12 18 views
0

Ich habe dieses Problem auf regexone.com - http://regexone.com/problem/matching_phone_numbers gefunden. Schreiben Sie einen einzelnen regulären Ausdruck, der mit der Zahl übereinstimmt, und erfassen Sie die richtige Ortskennzahl.Benötigen Sie Hilfe zum Verständnis dieser Regex

Exercise 2: Matching Phone Numbers 

Task  Text   Capture Groups  
Capture 415-555-1234 415  Success 
Capture 650-555-2345 650  Success 
Capture (416)555-3456 416  Success 
Capture 202 555 4567 202  Success 
Capture 4035555678  403  Success 
Capture 1 416 555 9292 416  Success 

Hier ist der Ausdruck (\d{1}?(\d{2})) den Code-Bereich erfasst, aber was ich verstehen müssen, ist meine erste Gruppe für 1 Stelle ist nur und ist optional. Und meine zweite Gruppe sollte nur zwei Ziffern haben. Wie wurden 3 Ziffern erfasst?

+0

Huh? Weil 1 + 2 = 3? Es wird entweder 2 Ziffern ('\ d {2}') oder 3 ('\ d {1} \ d {2}') – h2ooooooo

+0

[* Quantifier: {1}? Genau 1 mal (bedeutungsloser Quantifizierer) *] (https://regex101.com/r/xK6sE4/1) –

+0

@ h2ooooooo Was ist mit der letzten Nummer 1 416 555 9292? Es übersprang 1 und fing 416 ein –

Antwort

1

Wie @Mateen Ulhaq Antwort erwähnt, die erste Gruppe ist die gesamte Regex gegeben. Was Ihre andere Frage anbelangt, scheint es keinen Grund zu geben, die Ziffernübereinstimmung in zwei Gruppen aufzuteilen. Es würde Sinn machen, wenn die Ortscodes gelegentlich zweistellig wären, aber dies ist in keinem der gegebenen Beispiele der Fall. Die Regex (\d{3}) gibt die erwartete Ausgabe für alle von ihnen und ist kürzer und einfacher.

2

Ihre erste Gruppe wird durch die erste ( angegeben.

(\d{1}?(\d{2})) 
^   ^
|    | 
|    | 
everything inside here 

So erfasst es alle drei Ziffern.


Vielleicht eine bessere Möglichkeit, Ihre regex des Schreibens wäre:

(\d{2,3}) 

, die erfasst alle zwei oder dreistelligen Zahlen.

Wenn Sie möchten, als auch die erste Ziffer erfassen (das heißt 1 800):

((\d\s)?\d{2,3}) 
+1

Sie sollten in Ihrer Antwort klarstellen, dass die erste Gruppe alle drei Ziffern enthält, und dass die zweite Gruppe die letzten zwei Ziffern der ersten Gruppe erfasst. Die "Aufnahmen" –

Verwandte Themen