REGEXP
Dieter
- programmiertechnik
Hallo Forumer
folgendes Problem:
ich möchte mit Hilfe eines regulären Ausdruckes feststellen ob eine Reihe von Zahlen eine 1 enthält.
Das Problem dabei ist die 1 von z.B. 10,11,100 etc. zu unterscheiden.
Ich habe nach einigem herumprobieren eine Lösung gefunden, nur erscheint sie mir etwas holzhammermäßig, ich bin mir eigentlich sicher, dass man das auch eleganter lösen kann.
Falls jemand von Euch also eine bessere Variante hat würde ich mich über eine Antwort freuen.
Anbei mein Test-Snippet (PHP)
Viele Grüße
Euer Dieter
<?php
$test=array(
'1,2,10,11',
'2,10,11',
'13,2,10,11',
'3,1,2,10,11',
'11,10,100,101',
'5,1',
'1',
'1,2'
);
foreach($test as $t){
$r=eregi('(^1$)|(^1,)|(,1$)|(,1,)',$t);
printf('Enthält %s die Zahl eins ? %s<br>',$t,($r?'Ja ':'Nein'));
}
?>
Moin,
Falls jemand von Euch also eine bessere Variante hat würde ich mich über eine Antwort freuen.
Ich glaube die korrekteste Art und Weise wäre /\b1\b/ allerdings müsstest du dafür schon Perl Compatible Reguläre Ausdrücke anwerfen die ohnehin schneller als die ereg*-Funktionen arbeiten. Solch interessant Sachen findest du unter http://www.php.net/manual/en/pcre.pattern.syntax.php.
[snip]
$r=preg_match("/\b1\b/",$t);
[snip]
--
Henryk Plötz
Grüße aus Berlin
Hallo Henryk
"word boundary" - das war es was mir zu meinem Glück fehlte.
Viele Grüße
Dieter