Announcement

Collapse
No announcement yet.

Frage zu RegEx (IDE Suche)

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

  • Frage zu RegEx (IDE Suche)

    Hallo liebe Community,

    ich weiß nicht so genau wo das Thema reinpasst.....

    Aktuell bin ich dabei ein Projekt von PHP7 auf PHP8 umzustellen. Das ist soweit auch kein Problem.
    Jetzt geht es mir aber um folgendes, ich benutze als IDE Netbeans. Dort gibt es eine Suchfunktion die auch Regex unterstützt. Und zwar Java regex util pattern.

    Im PHP Quellcode wurde sehr oft bei Array nach den Schema $array[0][zipcode] oder $variable[kunde] gearbeitet. In PHP 7 wird das unterstützt, PHP 8 ja nicht mehr und benötigt z.b. $variable['kunde'].
    Daher möchte ich in dem doch sehr umfangreichen Quellcode per Regex nach [irgendeintext] suchen, wobei die Eckklammer auch per RegEx gesucht werden soll. Ein RegEx [[a-z]] funktioniert leider nicht.
    Wenn im Code also irgendwo $customer_arr[zipcode] steht, dann möchte ich das die suche alles auflistet mit dem Suchtreffer [zipcode]. Die suche soll aber nicht bereits geänderte Variablen wie $test['kunde'] finden.
    Es soll auch nur nach a-z gesucht werden (inkl. der Eckklammer), Zahlen kommen nicht vor.
    Was es RegEx angeht bin ich leider sehr unerfahren, speziel bei Java.

    Vielleicht habe ihr eine Idee. Ich hoffe das ich meine Frage irgendwie verständflich formuliert habe.


  • #2
    Hier kannst du deine Ausdrücke testen

    https://www.regexplanet.com/advanced/java/index.html

    Ich habe nicht verstanden was gesucht werden soll und was nicht

    Zeichen sind ggf. zu entwerten

    [\[\]]
    Christian

    Comment


    • #3
      Naja zum testen müsste ich wissen was ich zum testen eingebe. Eigentlich dachte ich, es wäre verständlich.
      Was ich suche (bzw die IDe suchen soll): Alles was hinter dem Arraynamen ab der Eckklammer steht, aber NICHT wenn schon ein Hochkomma vorhanden ist.
      Beispiel:
      Soll finden: [zipcode] oder [street]
      Soll nicht finden: ['zipcode'] oder ['street']

      Comment


      • #4
        Dann lautet der Ausdruck finde
        eckige Klammer auf
        gefolgt von Ziffern (5?) oder Beginn mit Buchstaben und beliebige Zeichen und Ziffern
        eckige Klammer zu

        Ohne Hochkomma in der Suche


        Ohne das ich das jetzt gestestet habe
        \[(\d{5})\]|\[(\w.*?)\]

        Naja zum testen müsste ich wissen was ich zum testen eingebe.
        >>Wahrscheinlich Testdaten
        wie [12345], [erwer45ef] und welche mit Hochkomma
        Zuletzt editiert von Christian Marquardt; 14.03.2024, 20:01.
        Christian

        Comment


        • #5
          Hm, ne das meinte ich so nicht.
          Im alten Quellcode (es werden Kundedaten und Bestellungen verarbeitet) stehen so sachen wie $array[0][zipcode], $array[0][street], $array[0][bestellID] und viele mehr.
          Ich muss daraus jetzt $array[0]['zipcode'], $array[0]['street'], $array[0]['bestellID'] machen da PHP8 ohne Hochkomma da aufn Poller läuft.

          Comment


          • #6
            Dann ist der Ausdruck richtig.
            Er findet [12345] oder [wrwrw 345f e]
            Das kannst du nun ersetzen lassen mit Hochkomma
            EDIT

            Obwohl mit dem ersetzen wird es bei einer ODER Suche schwierig
            Besser dann
            \[([a-zA-Z0-9 ]*)\]
            findet eckige Kammern in denen Buchstaben, Zifffern und Leerzeichen sind

            https://www.regexplanet.com/share/in...re=yyyypvrwv4r
            Zuletzt editiert von Christian Marquardt; 14.03.2024, 20:07.
            Christian

            Comment


            • #7
              Hoffe du hast eine Versionsverwaltung bzw. zumindest ein gutes Diff Tool für einen sauberen Vorher/Nachher Vergleich. Bei solchen Massenoperationen gibt es immer Corner Cases die man nicht bedacht hat und erst nachher bei einem Abgleich erkennt. Noch besser wären zusätzliche Unittests.

              Comment


              • #8
                Joo, ich würde das per Hand machen, ist sicherer.

                Man könnte sich auch schnell ein kleines Javaprogramm schreiben, das die Files einliest ändert und wieder schreibt
                Zuletzt editiert von Christian Marquardt; 14.03.2024, 20:19.
                Christian

                Comment


                • #9
                  Originally posted by planktonit View Post
                  PHP7 auf PHP8 umzustellen. ... IDE Netbeans.
                  RegEx ...
                  Von den Möglichkeiten unter NetBeans (PHP-Projekt) mit "Strg+H" / "Strg+F" oder "Strg+Umschalt+H" / "Strg-Umschalt+F" könnten automatisierte Mittel wie "PHP-Parser", "Rector", "Upgrader",... weiterhelfen (nicht nur beim einfachen Ersetzen von Hochkommata, sondern auch bei syntaktischen Möglichkeiten: PHP: Migration von PHP 7.4.x auf PHP 8.0.x - Manual ). Die Original Codebasis sollte man vorher gesichert und getestet haben.
                  MfG
                  Cheat-Sheets for Developers / Programming Quotes

                  Comment


                  • #10
                    Originally posted by Christian Marquardt View Post
                    Dann ist der Ausdruck richtig.
                    Er findet [12345] oder [wrwrw 345f e]
                    Das kannst du nun ersetzen lassen mit Hochkomma
                    EDIT

                    Obwohl mit dem ersetzen wird es bei einer ODER Suche schwierig
                    Besser dann
                    \[([a-zA-Z0-9 ]*)\]
                    findet eckige Kammern in denen Buchstaben, Zifffern und Leerzeichen sind

                    https://www.regexplanet.com/share/in...re=yyyypvrwv4r
                    Jaaa, genau, das funktioniert so wie ich das benötigt. Schon blöd wenn man RegEx nicht so oft baucht und da auf dem Schlauch steht.
                    Wegen den anderen Antworten, jo ich mach das lieber händisch, das ist für mich sicherer. Es geht ja nicht in die tausende oder so, der Aufwand ist überschaubar, nur das Suchen in den vielen Dateien wäre aufwändig. Aber so hilft mir das ungemein weiter. Vielen Dank!

                    Comment

                    Working...
                    X