Sitsaps Rhi: Teil aus einem String filtern

Hi..
Kann man einen Teil aus einem String mit Regular Expressions herausfiltern? Bisher habe ich das leider nicht hinbekommen. Der String sieht so aus:

a_b_cc_ddd_e_f

Ich möchte jetzt nur das haben, was zwischen a_b_cc_ und _e_f steht, also nur ddd. Ist das möglich?

  1. echo $begrüßung;

    Kann man einen Teil aus einem String mit Regular Expressions herausfiltern?

    Kann man. Aber muss es unbedingt die RegExp-Maschine sein? Reichen nicht auch einfache Stringfunktionen?

    Der String sieht so aus:

    a_b_cc_ddd_e_f

    Ich möchte jetzt nur das haben, was zwischen a_b_cc_ und _e_f steht, also nur ddd. Ist das möglich?

    Diese Problemstellung kann man mehrfach deuten. Sind die Teile a_b_cc_ und _e_f bzw. ddd immer gleich lang? Dann reichen Stringfunktionen. Sind die Zeile unterschiedlich lang aber immer durch das _ getrennt, kann man explode nehmen und dann auf das 4. Element des Arrays zugreifen. Ansonsten wäre eine genauere Beschreibung des Suchmusters nötig. Das Kapitel Reguläre Ausdrücke aus dem Perl-Teil von SELFHTML beschreibt dir schonmal die grundlegenden Möglichkeiten. Wenn du bei der Beschreibung des Suchmusters das dortige Vokabular verwendest (z.B. ein Buchstabe, dann Ziffer beliebig oft, dann ...), hast du das Suchmuster schon fast fertig.
    RegExp sind mächtig, aber auch nicht allmächtig. Manchmal lässt sich das Problem damit auch gar nicht lösen oder nur sehr umständlich.

    echo "$verabschiedung $name";

    1. Diese Problemstellung kann man mehrfach deuten. Sind die Teile a_b_cc_ und _e_f bzw. ddd immer gleich lang?

      Der erste Teil ist immer gleich, der zweite kann varieren, besteht aber immer aus Buchstaben und Unterstrichen..

  2. Hi,

    klar ist das möglich. Die Frage ist jetzt aber, ob der Text vor und nach dem zu filternden Text immer gleich ist oder ob der sich ändert.

    Wenn der sich nicht ändert, dann kannste das Problem ganz leicht mit substring lösen.

    Du hast die Länge von dem Text vor dem FilterText und kannst die Anfangsposition in dem gesamten String von dem letzten Text herausfinden.

    Schwupps hast du 2 Position und nun kannste darauf einen substring loslassen.

    Gruß,
    Thorsten F.

  3. Hallo,

    Ist das möglich?

    Ja. Regular Expression Functions

    Je nach Komplexität reicht möglicherweise auch eine einfache (Kombination von)  String-Funktionen, die schneller sind als Regulaäre Ausdrücke.

    Viele Grüße
    Patrick

    --
    "Though this be madness, yet there's method in't."
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  4. Hallo,

    findest Du Deinen Nick etwa toll?

    Wer's noch nicht gemerkt hat möge ihn bitte rückwärts lesen (und feststellen, dass der Plural falsch gebildet wurde)...

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.