Announcement

Collapse
No announcement yet.

RegEx - Suchen & Ersetzen - Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RegEx - Suchen & Ersetzen - Problem

    Hallo ihr Tüftler,

    ich habe folgendes Problem mit einer RegEx

    Gegeben ist der String: abagsd-123M
    Dies ist meine RegEx: ^([a-z]+).*([0-9]+[mM]).*
    Im ErsetzenFeld steht: \1\n\2

    Ist-Ergebnis:
    abagsd
    3M

    Soll-Ergebnis:
    abagsd
    123M

    Hat jemand von euch eine Idee was geändert werden muss um das Soll-Ergebnis zu erreichen?

    Noch eins ich verwende den Editor Notepad++.

  • #2
    ^([a-z]+)\D*([0-9]+[mM]).*

    oder

    ^([a-z]+).*?([0-9]+[mM]).*

    EDIT:

    .* ist gierig und liest maximal. Und da [0-9]+ auch schon mit einer Ziffer erfüllt ist, werden die beiden anderen .* zugeschlagen
    Zuletzt editiert von Christian Marquardt; 03.02.2011, 08:17.
    Christian

    Comment


    • #3
      Danke Christian Marquardt,

      jetzt sehe ich auch den Fehler in meiner RegEx. Klar die Zeichen vor [0-9] werden durch .* geschluckt, übrig bleibt also nur die Zahl vor m oder M.

      Comment


      • #4
        Hallo und guten Abend,

        ich habe noch eine Frage zu folgender RegEx:
        Code:
        <a[^>]*href=\"([^\s\"]+)\"[^>]*>([^<]*)<\/a>


        Ich habe eine Textzeile in der mehrere Links stehen, vor bestimmten Links steht die Zeichenfolge ABC. Die RegEx soll alle Links mit der vorangestellten Zeichenfolge ABC finden.

        Mit der RegEx:
        Code:
        ABC.*<a[^>]*href=\"([^\s\"]+)\"[^>]*>([^<]*)<\/a>
        wird der gesamte Bereich vom ersten ABC bis zum letzten Link markiert was ja nicht das Ziel ist.

        Wenn man dieses Problem über die Einschränkung der Gierigkeit des Quantifiziers nach ABC regeln kann dann sehe ich die Lösung partou einfach nicht und mit der Möglichkeit Negative Lookahead-Assertion komme ich auch auf keinen Nenner.

        Comment


        • #5
          Ohne das jetzt ausprobiert zu haben sollte doch Beitrag#2 zutreffen

          ABC.*?<a[....
          Christian

          Comment


          • #6
            Das hab ich schon probiert, Notepad++ kann dann nichts mehr finden.

            Comment


            • #7
              Danke Christian Marquardt für deine Antwort. Ich dachte mir auch schon das es theoretisch funktionieren müsste.

              Die RegEx:
              Code:
              ABC.*?<a[^>]*href=\"([^\s\"]+)\"[^>]*>([^<]*)<\/a>
              funktioniert, nur in Notepad++ nicht.

              Comment


              • #8
                Wie kann man bei beiden Backreferences einen eventuellen / ausschließen, der an letzter Stelle steht?
                Code:
                ABC.*?<a[^>]*href=\"([^\s\"]+)\"[^>]*>([^<]*)<\/a>

                Comment


                • #9
                  Da reguläre Ausdrücke ein "und nicht XYZ" nicht kennen -> gar nicht, sofern du nicht irgendwo das Zeichen direkt negieren kannst
                  Christian

                  Comment

                  Working...
                  X