PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Regulärer Ausdruck: Extraktion aller 6-stelligen Zahlen


alex984
28.02.2008, 08:30
Ich möchte mittels PHP aus einem String wirklich alle 6 stelligen Zahlen ermitteln.

Dazu habe ich folgendes probiert:


preg_match_all("/[0-9]{6}/", "123456789101", $matched);
print_r($matched)


Dies führt zu folgendem Ergebnis:


Array
(
[0] => Array
(
[0] => 123456
[1] => 789101
)
)


Gewünscht wäre jedoch dieses Resultat:


Array
(
[0] => Array
(
[0] => 123456
[1] => 234567
[2] => 345678
[3] => 456789
[4] => 567891
[5] => 678910
[6] => 789101
)
)


Ich möchte also wirklich alle 6 stelligen Zahlen aus einem String ermitteln.

Wie muss ich also meinen regulären Ausdruck anpassen?


Firefall
28.02.2008, 16:25
Das dürfte äusserst schwierig werden. Ich glaube nicht, dass das mit einem Ausdruck getan ist. Ich würde den ersten Match suchen, dann bis und mit dem ersten Zeichen des Matches alles vom String abschneiden und erneut suchen bis keine Matches mehr.

claW
28.02.2008, 17:06
ein kurzer blick in das tutorial (http://www.regular-expressions.info/possessive.html) hätte geholfen, stichwort "Possessive Quantifiers" ;)

<pre>
<?php

$subject = '123456789101';
$regexp = '#(?=(\\d{6}))#i';
$hits = array();

preg_match_all( $regexp, $subject, $hits );
print_r( $hits );

?>
</pre>

// edit:

vielleicht noch die ausgabe:

Array
(
[0] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
)

[1] => Array
(
[0] => 123456
[1] => 234567
[2] => 345678
[3] => 456789
[4] => 567891
[5] => 678910
[6] => 789101
)

)


allerdings weiß ich nicht ob man den index 0 irgendwie ausschließen kann. klammern weglassen kannst du bei dem regexp nicht, sonst wird er ungültig.

alex984
29.02.2008, 09:10
Vielen Dank für eure Hilfe - hat funktioniert.