André Laugks: Regulärer Ausdruck gesucht

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

--
L-Andre @ gmx.de\n
  1. 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?

    • Tim
    --
    <img src="http://validator.w3.org/images/v15445" border="0" alt="">
    1. Hallo,

      /0[0-9][0-9]\sm&sup2;/

      ... 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

  2. 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

    --
    The only legitimate use of the greatly loathed <BLINK> tag:
    Schroedinger's Cat is <BLINK>NOT</BLINK> dead.
    --- User Friendly 27/04/2003
  3. 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);

    ?>