Regex Frage

S

scherlomatic

Hallo!

Bin nicht der RegexProfi und ohne jetzt stundenlang die Dokus durchzugehen, hoffe ich mal auf eure Vorschläge und Hilfestellungen.

Aufgabenstellung:
Ich muss einen String in 2 teile splitten, möglich Kombination:
1) -wort1-
2) --wort2
3) -wort1-wort2

bis jetzt funktioniert es mit folgender Regex: /-(.*)-(.*)/

jetzt kommen aber spezialfälle hinzu. also kurz gesagt wort1 und wort2 können auch "-" enthalten, im regalfall 1 oder 2, wobei es wenn möglich keine beschränkung geben sollte.:
4) -wor-t1-wor-t2
5) -wor-t1-
6) --wor-t2
7) -wort1-wor-t2
8) -wor-t1-wort2

ich hoffe ihr wisst jetzt worauf ich hinaus will.

kurz noch zum background, ist für eine SEO freundliche Url, die aus einem Namen und einem Ort besteht, und mit "-" eingeleteitet wird.


Lg stefan
 
Wenn die Wörter selbst das Trennzeichen der zwischen den Wörtern enthält, ist eine eindeutige Trennung nicht mehr möglich. Denn wie sollte bei -wor-t1-wor-t2, -wort1-wor-t2 und -wor-t1-wort2 unterschieden werden, wo das erste Wort endet und wo das zweite beginnt?
 
das habe ich leider auch schon befürchtet.

besonders bei so einem fall weiß man es nicht mehr: -wort-wohin-wort

hättest vl auch ne idee wie ich es lösen könnte, ich hätt ja lieber ein "_" als identifier, allerdings soll es bzgl seo nicht optimal sein.

lg
 
Hi!

Warum nicht einfach das Naheliegenste; einen einen Slash verwenden? Beispiel /buchholz-in-der-nordheide/müller-lüdenscheid.html - da kann selbst der pingeligste SEO-Fanatiker nicht viel aussetzen.

Gruß
Enum
 
wär deiner meinung, allerdings ist der seo-experte (;-)) in unserer firma, einer anderen meiung, weil der g**gle auch nach linktiefe (also wieviele / in der url vorkommen) gehen soll. sind halt alles wage annahmen in diesem seo business.

aber danke ersteinmal für die tipps, werd mir was überlegen.
 
Hallo!
jetzt kommen aber spezialfälle hinzu. also kurz gesagt wort1 und wort2 können auch "-" enthalten, im regalfall 1 oder 2, wobei es wenn möglich keine beschränkung geben sollte.:
4) -wor-t1-wor-t2
5) -wor-t1-
6) --wor-t2
7) -wort1-wor-t2
8) -wor-t1-wort2
Diese Fälle können nur abgedeckt werden, wenn die einzelnen Wörter in "" oder etwas ähnlichem stehen.

-wort1-"wort-mit-Strich"-wort3

ichs habs irgendwann mal mit dem folgenden Pattern für VBA gelöst
Trennzeichen: ;".."; oder ;..;
Patern: ((?!;)"(?:[^"]|"[^;])+"|(?!;)(?:[^;])+)
Beispiel: Feld_1;Feld_2;"Feld;3"

Wobei zu beachten ist, das der Teilpattern (?!pattern) ggf je nach Sprache anders formulieren muss. Hier die Erklärung was es bei VBA bewirkt:
(?!pattern) Negative lookahead matches the search string at any point where a string not matching pattern begins. This is a non-capturing match, that is, the match is not captured for possible later use. For example 'Windows (?!95|98|NT|2000)' matches "Windows" in "Windows 3.1" but does not match "Windows" in "Windows 2000". Lookaheads do not consume characters, that is, after a match occurs, the search for the next match begins immediately following the last match, not after the characters that comprised the lookahead.
 
Zurück