Regulärer Ausdruck gesucht
André Laugks
- programmiertechnik
Hallo!
Ich suche einen regulären Ausdrucke, der mir in einem String z.B. "055 m² bis 070 m²" die 0 vor Ziffen zwischen 1-9 entfernt.
Solle Zeichenfolgen zu finden, ist kein Problem...
Wie nennt sich die "Technik" bei regulären Ausdrücken?
MfG, André Laugks
Hallo André,
Ich suche einen regulären Ausdrucke, der mir in einem String z.B. "055 m²
bis 070 m²" die 0 vor Ziffen zwischen 1-9 entfernt.
Solle Zeichenfolgen zu finden, ist kein Problem...
Ja? Ich als RegEx-Laie würde sowas basteln...
/0[0-9][0-9]\sm²/
... ohne zu wissen, ob es klappt, oder wie Du die hochgestellte Zwei
hinkriegst.
Wie nennt sich die "Technik" bei regulären Ausdrücken?
Suchen und Ersetzen meinst Du?
http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#suchen_ersetzen
Ersetzen willst Du den Ausdruck mit einem Teilstück des Ausdrucks, nämlich
dem Teil ohne der führenden Null. Dazu mußt Du den betreffenden Teil
einklammern.
http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#merken
Mein obiger sicherlich verquaster Ausdrück würde dann so aussehen:
s/0([0-9][0-9]\sm²)/$1/g
Vielleicht hilft Dir das?
Hallo,
/0[0-9][0-9]\sm²/
... ohne zu wissen, ob es klappt, oder wie Du die hochgestellte Zwei
hinkriegst.
Die 2 kannst Du, soweit ich weiss, als ², (178) = octal oder (B2) = hex angeben
Dieter
Hallo André,
Ich suche einen regulären Ausdrucke, der mir in einem String z.B. "055 m² bis 070 m²" die 0 vor Ziffen zwischen 1-9 entfernt.
$string =~ s/\b0+(?=[1-9])//g;
müsste funktionieren.
$string =~ s/ suche im $string
\b den Anfang eines neuen "Wortes"
0+ gefolgt von einer oder meheren Nullen
[1-9] die vor einer Ziffer (die aber wegen ?= nicht mit ersetzt wird) stehen
// und ersetze den Ausdruck durch "nichts"
g auch mehrmals im String.
Wie nennt sich die "Technik" bei regulären Ausdrücken?
Die Frage verstehe ich nicht. Aber s/// ist der Substitutions Operator.
Grüße,
Peter
Hallo, André,
keine Ahnung, wie Du die Nullen mit einem regulären Ausdruck entfernen kannst. Vielleicht reicht aber auch schon die u.a. Funktion ...
Grüße,
Sebastian
--------------- schnipp ---------------
<?php
$test = '010 und 0010 und 00010 und 000010 ...';
// Remove leading zeros
function removeLeadingZeros($str)
{
$flag = 1;
while($flag == 1) {
for($i=0;$i<strlen($str)-1;$i++)
{
if($str[0]==' 0') {
$str[0] = ' ';
$flag = 1;
}
else if($str[$i].$str[$i+1]==' 0') {
$str[$i] = ' ';
$str[$i+1] = ' ';
$flag = 1;
}
else {
$flag = 0;
}
}
}
return $str;
}
echo 'old: ' . $test . "<br>\n<br>\n";
echo 'new: ' . removeLeadingZeros($test);
?>