kostenloser Webspace werbefrei: lima-city


Teilstrings mit RegExp rausschneiden

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    banditsoberberg

    Kostenloser Webspace von banditsoberberg

    banditsoberberg hat kostenlosen Webspace.

    Hallo @All,

    ich habe eine Liste von Strings die Teilweise mit "Copy_" bzw. "Copy_Copy_" beginnen in einer Oracle Datenbank stehen. Ich möchte alle diese "Copy_" via RegExp abschneiden. In Oracle gibt es hierfür REGEXP_SUBSTR(). Kann mir einer ein Beispiel geben wie die RegExp dafür aussehen würde?

    SELECT REGEXP_SUBSTR('Copy_Copy_ABC','???') FROM DUAL;

    Beispiel:
    Copy_ABC soll zu ABC werden
    oder
    Copy_Copy_ABC soll auch zu ABC werden

    Gruß

    Dirk
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. also ich weiß nicht in wie weit der Posixstandard von den versch. Datenbanken eingehalten wird, aber in PHP würde ich dass so lösen:
    $string = preg_replace("/^(Copy_)*/", "", $string);

    entsprechend sähe der code für deine Datenbank so aus:
    SELECT REGEXP_REPLACE('Copy_Copy_ABC','^(Copy_)*','') FROM DUAL

    ich hoffe ich hab keinen Fehler drin, aber vom ding her sollte das eine replace aufgabe sein, statt einen substring zu suchen.

    Beitrag zuletzt geändert: 14.4.2010 20:57:40 von nemoinho
  4. Autor dieses Themas

    banditsoberberg

    Kostenloser Webspace von banditsoberberg

    banditsoberberg hat kostenlosen Webspace.

    Oh vielen Dank,

    Dein Beispiel funktioniert wunderbar! ;-)
    Habe Dein Beispiel auf REGEXP_SUBSTR() übertragen:

    SELECT REGEXP_SUBSTR('Copy_Copy_ABC','[^(Copy_)].*') FROM DUAL;


    Vielen Dank hat mir super weiter geholfen!

    Dirk

    Beitrag zuletzt geändert: 15.4.2010 11:45:40 von banditsoberberg
  5. ah ja so kann das auch aussehen, ich hab wie gesagt praktisch keine Ahnung von Oracle-Datenbanken und hatte nur kurz überflogen wie dass da aussieht und da erschien mir die replace-Variante am einfachsten, aber richtig cool finde ich regexp eh nur in Perl, denn da sieht das immer gleich supercryptisch aus, obwohl es da finde ich viel einfacher geregelt ist, man muss nur verstehen was da passiert:
    $string =~ /^(Copy_)*//;

    ist doch nett oder?

    Beitrag zuletzt geändert: 15.4.2010 17:58:42 von nemoinho
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!