Ich versuche, das folgende Muster zu entsprechen und ein Array erstellen, wie unten beschrieben:hinzufügen Regex paßt zu bidimensional Array im Namen ihrer Position
letter 'c' followed by digit
letter 'c' followed by digit dash digit
digit may be followed by an other digit enclosed in square parentheses []
Muster sind durch Komma getrennt.
Beispiel:
c2,c3-5,c6[2],c8[4]-10,c14-21[5]
Diese Zahlen beziehen sich auf den Absätzen der Artikel von Gesetzen und wo es einen Strich bedeutet dies, dass eine Reihe von Absätzen ist.
So zum Beispiel:
c3-5 = paragraphs from 3 to 5
Mit der folgenden regex ich mithalten kann und trennen Sie die Zahlen:
(\d+(\[\d+\])?-\d+(\[\d+\])?)|(\d+(\[\d+\])?)
https://regex101.com/r/iQ2pQ3/1
Aber effektiv nutzen diese Zahlen Ich versuche, Erstellen - ohne Erfolg - ein Array mit der folgenden Struktur:
Array
(
[0] => Array
(
[start] => 2
[end]=>
)
[1] => Array
(
[start] => 3
[end] => 5
)
[2] => Array
(
[start] => 6[2]
[end] =>
)
[3] => Array
(
[start] => 8[4]
[end] => 10
)
[4] => Array
(
[start] => 14
[end] => 21[5]
)
)
Sie können sehen, dass einzelne Spiele auf das Array mit dem Schlüssel [start]
, hinzugefügt werden, wenn es ein Bindestrich (ein Bereich) die erste Ziffer mit der Taste [start]
und die zweite mit dem Schlüssel [end]
hinzugefügt.
Die einzige Art, wie ich dachte, dass ich es zu ersten explode
durch Komma der Zeichenfolge aus arbeiten konnte und dann einen regulären Ausdruck auf den einzelnen explodierten Strings verwenden. Selbst wenn man nicht weiß, wie man ein Array wie das obige baut.
Gibt es eine bessere (kompaktere und elegantere) Methode?
Fantastisch! Ich wusste nicht, dass Gruppen benannt werden können. Sehr gute und nützliche Erklärung. – Nicero