RegEx für Pfad

Status
Nicht offen für weitere Antworten.

TIMS_Ralf

Erfahrenes Mitglied
Hallo allseits,
ich rege zunächst nochmal an, evtl. ein Board für "Regular Expressions" einzurichten.. JS passt ja nicht so ganz :)

Ich benötige einen RegExp-Ausdruck, der mir Pfade und Domainnamen ersetzt. Mein Problem liegt in der variablen Anzahl an "Ordner zurück" ( ../ ) die in der Quelle stehen könnten:

Code:
// RegExp search
"../domain-name.de/ordner1/ordner2/"
"../../domain-name.de/ordner1/ordner2/"
"../../../domain-name.de/ordner1/ordner2/"
// ... max 5. mal "../"

// Sollen ersetzt werden können nach: RegExp replace:
"http://ordner1.domain-name.de/ordner2/"

"domain-name.de/" muß dabei als Variable erkannt, übernommen und ersetzt werden (die Domain ist natürlich variabel, Variable = $2 ? )
Kann man unter RegExp keine Maske anlegen ( Maske= "../"), die sich auch beliebig wiederholen kann... oder so ähnlich ?

Jemand eine Idee? Danke!
 
Zuletzt bearbeitet:
ich rege zunächst nochmal an, evtl. ein Board für "Regular Expressions" einzurichten.. JS passt ja nicht so ganz
Problem dabei, es gibt keine einheitliche RegExp-Syntax für die diversen Programmier-/Scriptsprachen.

Um aber auf Deine (viel wichtigere) Frage einzugehen: Jaaa, nichts ist unmöglich :cool:

Variable Anzahl von Zeichen(ketten), der Einsatz von geklammerten Mustern (Maske), um das Ergebnis speichern und zu einem anderen Zeitpunkt per $1, $2, ... wiederverwenden zu können, usw.

Let's have a look :)
[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Hi + Danke...
Ja, schon klar. Die Sprache ist erstmal egal, wir reichen die RegExp-Ausdrücke / Masken für search / replace. Ich bau das dfann schon je nach Sprache ein. Also z.B. anderes, blödes Beispiel:

Suche: MAX=([0-9.-]*)
Ersetze: MAX="$1"
 
Hi + Danke...
Ja, schon klar. Die Sprache ist erstmal egal, wir reichen die RegExp-Ausdrücke / Masken für search / replace. Ich bau das dfann schon je nach Sprache ein. Also z.B. anderes, blödes Beispiel:

Suche: MAX=([0-9.-]*)
Ersetze: MAX="$1"
Alles, was Du bzgl. des JS-RegExp wissen willst/musst, kann meinen empfohlenen Links entnommen werden.

Ich poste bei RegExp-Fragen ungern eine gebrauchsfertige Lösung, weil der Lerneffekt für den Fragenden bei dieser z.T. kryptisch anmutenden Syntax dann gleich null ist - copy&paste, and ready.

Das Thema ist so weitläufig und komplex, dass man es sich in den Grundzügen eigenständig aneignen/verinnerlichen sollte/muss (meine persönliche Erfahrung u. Meinung), um damit auch zukünftig noch klar zu kommen, wenn wieder was in dieser Richtung ansteht.

[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Sorry, aber warum machst Du Dir nen Kopp um meine Lernfähigkeit und Arbeitsweise? Ich will keineswegs copy/paste und natürlich will und werde ich es auch verstehen !? Du kannst auch gerne ein Tutorial anfügen!
Ich dachte das ist ein Hilfeforum (Tutorials = Anleitungen) , kein "Du -musst-arbeiten-wie-ich-es-will-Forum".
Ich bastle und spiele hier nicht!
Und wenn ich dergleichen Links (u.a.) dazu nicht schon besucht hätte ( u.a.), dann wäre ich auch nicht bei Euch gelandet.

Jemand anders einen Lösungsansatz / Tutorial?
 
Okay, hier eine Lösung, statt Wichtigtuerei:

Eingabe:
Code:
SRC="../../../../domain-name.de/ordner1/ordner2/
RegExp:
Code:
SRC="([./]*)([a-zA-Z\d.-]*)/ordner2/
Replace:
Code:
SRC="http://ordner1.$2/ordner2/
Ausgabe:
Code:
SRC="http://ordner1.domain-name.de/ordner2/

Die Sprache ist dabei vollkommen unerheblich. Es geht lediglich um den regulären Ausdruck (RegExp) und dessen Anwendung (Replacement).Ich weiß auch nicht,was daran so "komplex" sein soll.
Ich hatte nur einen Denkfehler, weil ich es mit nur einer Variable versucht hatte.

Tutorial:
1. Hier habe ich das SRC-Attribut von HTML ersetzt, aber das kann auch für jede beliebige andere Sprache verwendet werden. Es muß dann halt nur im Replacement identsiche angegeben werden.
2. Die Anzahl der "Ordner-Zurück = ../" wird in Var1 = $1 gespeichert durch ([./]*) Erlaubte Zeichen sind "." und "/"
3. Der Domain-Name wird in Var2 = $2 gespeichert durch ([a-zA-Z\d.-]*) - wobei:
"\d" nur 0-9 ersetzt / verkürzt (Man könnte auch a-z etc- ersetzen... )
".-" die zusätzlich erlaubten Sonderzeichen einer URL sind
4. Folegnde Ordner sind beliebig, können auch weggelassen werden
5. Die Ersetzung (Replace)
- setzt fix das "SRC="http://" davor
- setzt dann "$2"
- dann können weitere Ordner folgen (oder auch nicht)
- $1 wird einfach weggelassen (da war mein Denkfehler)

Noch eleganter könnte man es lösen, indem auch ordner1 in einer Variable gespeichert wird... aber mal egal.

################################################################
Mal grundsätzlich, meine pers. Meinung:
Falls jemand keine Lösung bieten kann oder will, dann kann er es doch auch sein lassen - egal ob gerne oder ungerne.
Ansonsten dauert für jemand, der eine Lösung hat, deren "Preisgabe" sicherlich weniger lang, als sich erst Links und andere Tutorials zusammen zu suchen, um diese hier dann schulmeisternd hier zu posten, als eine kurze Lösung (mit oder ohne Tutorial).

Ich denke soetwas zeichnet eine gute Community aus und nur so macht sie sich positiv publik.

Beste Grüße,
Ralf
 
...als User:

Ist ja schön, dass du uns deine (nicht wirklich passende) Antwort auf eine unbeantwortbare Frage zeigst.

Wenn mich das zum Besserwisser in einer schlechten Community macht, meinetwegen, aber:
Wenn du denkst, die Syntax ist egal weil du das selbst übersetzen kannst, dann
  • a) verstehst du nicht einmal annähernd, worum es geht (Einführungslinks angebracht)
  • b) kannst dir die Antwort auf die erste Frage selbst geben und bist nur zu faul (selber machen lassen auch angebracht)
  • oder c) bist du einfach zu wenig fortgeschritten, weigerst dich aber Gegenfragen zu beantworten weil du ja schon 100%ig weißt dass es nicht wichtig ist (warum dann überhaupt fragen, wenn man schon alles weiß).
:rolleyes:

Was heutzutage alles unter "Regexp" läuft ist so verschieden wie X86-Assembler und PHP7...
 
warum machst Du Dir nen Kopp um meine Lernfähigkeit und Arbeitsweise?
Wer hat dir denn sowas geflüstert? :p
wenn ich dergleichen Links (u.a.) dazu nicht schon besucht hätte ( u.a.), dann wäre ich auch nicht bei Euch gelandet.
Dann hast du deinen ersten Beitrag schlichtweg unglücklich formuliert, weil dir das
"domain-name.de/" muß dabei als Variable erkannt, übernommen und ersetzt werden (die Domain ist natürlich variabel, Variable = $2 ? )
Kann man unter RegExp keine Maske anlegen ( Maske= "../"), die sich auch beliebig wiederholen kann... oder so ähnlich ?
vom Grundsatz her hätte bekannt sein sollen - und mehr das "Wie" in den Mittelpunkt der Fragestunde gerückt wäre.

Hinterher ist man immer schlauer, und kann dann locker auf dicke Hose machen :-]
Ich dachte das ist ein Hilfeforum (Tutorials = Anleitungen) , kein "Du -musst-arbeiten-wie-ich-es-will-Forum".
Wie in Klammern betont
(meine persönliche Erfahrung u. Meinung)
die ich frei kund tue.

Wenn du Grundlagenforschung als überflüssig betrachtest, fein - deine freie Entscheidung. Wohin es dich dann verschlägt, kein Kommentar!

Klar ist das hier ein Hilfeforum.

Aber in der öffentlich ausgehängten Hausordnung finde ich keinen Paragraphen, der mich dazu verdonnert, dem Hilfesuchenden unverzüglich die Lösung zu übergeben, um Unfrieden zu vermeiden, und der Forenbetreiber nicht nach § 323c StGB (Tatbestand der unterlassenen Hilfeleistung) angezeigt wird - und hier seines Lebens nicht mehr glücklich wird:p

Lösung, statt Wichtigtuerei:
Du kennst mich hier mittlerweile lang genug, um es besser zu wissen, dass ich Dir zu anderen Fragen (HTML, CSS, JS) nicht blos Links empfohlen habe, sondern konkrete Lösungen geliefert habe - also, wer von uns beiden spielt sich hier auf?

... aber im Kindergarten gehört's zum schlechten (Umgangs)Ton, die Umwelt anzupöbeln, wenn's nicht so nach dem eigenen Kopf läuft.
Ich weiß auch nicht,was daran so "komplex" sein soll.
Ich hatte nur einen Denkfehler
Diese Aufgabenstellung ganz sicher nicht, aber RegExp in seiner ganzen Vielfalt sehr wohl.

Genau das, und nur das, habe ich zum Ausdruck bringen wollen - also halte dich besser zurück, mir die Worte im Mund zu verdrehen bzw. ihren Kontext ad absurdum führen zu wollen.

Ist ja schließlich auch nicht deine erste Frage rund um die regulären Ausdrücke - alle Jahre wieder: https://www.tutorials.de/threads/regex-einige-sonderzeichen-in-suchmuster.402771/

Und weil ich auf so unverhältnismäßige Reaktionen und haltlose Unterstellungen locker verzichten kann, bieg' ich gleich auf dem Heimweg kurz zum Kontrollzentrum ab, um nach langer Zeit meine Ignorierliste https://www.tutorials.de/account/ignored zu aktualisieren.

Isch habbe fertisch!
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück