2016-07-06 7 views
0

Ich habe eine Reihe von Altersdaten, wie unten;Wie kann ich Regex verwenden, um diese bestimmte Altersspanne zu erfassen?

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
1,1 
1,2 
1,3 
2,12 
11,13,15 
7,8,12 

Und so weiter ... Ich versuche, Regex zu verwenden, in einen bestimmten Satz von Alter zwischen 1-7 Ziel, aber nur, wenn ein Kind älter als 8 ist nicht in der Gruppe.

Meine aktuellen Treffer enthalten alle einstelligen Zeilen 1,2,3,4,5,6,7 - perfekt. Es entspricht 1,2 und 1,3 zum Beispiel - perfekt. Es entspricht aber auch der Zeile mit 2,12 und 7,8,12 - nicht was ich wollte.

Jeder Rat würde geschätzt werden, wie zu lösen? Vielen Dank im Voraus, ich versuche weiterhin zu korrigieren.

+4

Ich würde die Zahlen separat mit regexp erfassen und dann mit der logischen Seite des Problems mit einer anderen Sprache befassen. –

+0

@AdrienBrunelat - ... oder ohne Programmierung: Laden Sie es als kommagetrennte Daten in Excel (Menü Daten> From Text) und erstellen Sie dort die notwendigen Formeln. – miroxlav

+0

@miroxlav mit Excel-Formeln * ist * [Programmierung] (https://en.wikipedia.org/wiki/Computer_programming) .. – Aprillion

Antwort

3

Sie können es in einer Gruppe setzen und es wiederholen:

^(?:[^\n\d]*\b[1-7]\b[^\n\d]*)+$ 

a demo on regex101.com See.


Gegliedert, das sagt:

^  # anchor it to the beginning 
(?:  # a non capturing group 
[^\n\d]* # not a number or newline 
\b  # a word boundary 
[1-7] # a digit from 1-7 
\b  # another boundary 
[^\n\d]* # same as above 
)+  # repeat the whole construct at least once 
$  # THE END 


Oder wie andere schon gesagt, explode() es auf dem Komma und es programmatisch vergleichen.

+1

das ist perfekt, danke Jan. Ich habe eine letzte Frage, und ich versuche, mich selbst zu tun, aber nur nirgends. Ich werde eine letzte Frage stellen! Dankesehr! –

+0

@PhilBarnes: Freut mich zu helfen, ich freue mich auf die nächste Frage :) – Jan

+0

Aber wenn plötzlich Ihre Anforderungen von Alter 7 bis Alter 10 oder mehr ändern, wird dies obsolet werden. –

Verwandte Themen