Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Regex Frage
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Di Okt 16, 2007 9:38 am    Titel: Regex Frage Antworten mit Zitat

Hallo an Euch,

ich habe mal wieder ein kleines Problem und mir fehlt die passende Idee:

ich möchte in einem String den Buchstaben nach dem Bindestrich finden und diesen in jedem Fall auf Großbuchstaben setzen.

Beispiel:

"Marie-luise" oder "Marie - luise" soll werden zu "Marie-Luise"

Ich finde leider keine vernünftige Regenechsenvariante Wink

Wolke

[/code]


Zuletzt bearbeitet von wolke am Mi Okt 17, 2007 9:57 am, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 778
Wohnort: C:\

BeitragVerfasst am: Di Okt 16, 2007 10:09 am    Titel: Antworten mit Zitat

Versuch es mal mit Arrow IfInString wäre etwas einfacher als RegEx Wink
_________________

msgbox, 1577008, Ich bin msgbox, Teste mich mal
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasso



Anmeldedatum: 17.11.2005
Beiträge: 104
Wohnort: Hamburg

BeitragVerfasst am: Di Okt 16, 2007 10:46 am    Titel: Antworten mit Zitat

Hallo wolke,

versuch's mal so:
Code:
name=Marie - luise
StringUpper, neu, name, T                ; Wortanfänge in Großbuchstaben
StringReplace, neu, neu, %A_SPACE%, , A  ; Leerzeichen entfernen
MsgBox, %neu% %position%`r`n%zeichen%

_________________
Hasso

Programmers don't die. They just GOSUB without RETURN.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Di Okt 16, 2007 11:04 am    Titel: Antworten mit Zitat

Danke für die Ideen allerdings sind stringUpper und ifinstr zu spezifisches AHK, Regex ist für viele Skriptsprachen geeignet, ich benötige eine Lösung für AHK die ich dann abgewandelt auch in Javaskript oder in PHP brauche.
Es sollte doch auch mit Regex gehen oder?

Gruß Wolke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: Di Okt 16, 2007 11:15 am    Titel: Antworten mit Zitat

Benutze Titan's "RegEx Analyzer" (die AHK RegEx Syntax orientiert sich an Perl)
Nach oben
AGU
Gast





BeitragVerfasst am: Di Okt 16, 2007 11:18 am    Titel: Antworten mit Zitat

Bin, wie schon oft erwähnt, kein ausgewiesener RegEx Experte. Da ich gerade mal wieder unter Linux unterwegs bin, konnte ich das Folgende noch nicht mal testen, aber vielleicht funktioniert es ja auf Anhieb. Wink

Code:
Var1 = Marie - Luise
Var2 = Marie-Luise
Var3 = Marie-luise

NewStr1 := RegExReplace(Var1, "\b(\w)+\s?-\s?(\w)+\b", "$1-$T2")
NewStr2 := RegExReplace(Var2, "\b(\w)+\s?-\s?(\w)+\b", "$1-$T2")
NewStr3 := RegExReplace(Var3, "\b(\w)+\s?-\s?(\w)+\b", "$1-$T2")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%


Kann übrigens auch noch toralfs RegEx Tester empfehlen.
Arrow http://www.autohotkey.com/forum/viewtopic.php?t=17844

EDIT
Habe noch ein paar kleiner Korrekturen in dem Skript gemacht, die durch Copy&Paste entstanden sind.
____________________
Gruß AGU
Nach oben
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Di Okt 16, 2007 11:31 am    Titel: Antworten mit Zitat

Hallo AGU,

So meine ich es, allerdings wäre es so ausagefähiger:

Code:
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%


allerdings kommt da nur e-E an von der Marie

bei mir sieht es einfacher aus ist aber immer noch nicht funktionstüchtig was ich so gar nicht verstehe:
Code:
Var1 = Marie - Luise
Var2 = Marie-Luise
Var3 = Marie-luise

NewStr1 := RegExReplace(Var1, "[-][a-z]", "$1-$T2")
NewStr2 := RegExReplace(Var2, "[-][a-z]", "$1-$T2")
NewStr3 := RegExReplace(Var3, "[-][a-z]", "$1-$T2")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%


Trotzdem Danke und

Gruß Wolke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Di Okt 16, 2007 12:29 pm    Titel: Antworten mit Zitat

Was ich nicht verstehe ist die Syntax. Für "$1-$T2" git er nur das Zeichen von Marie zurück also e-E. Auch nach Studium der Hilfe komme ich nicht zurecht, da wäre eigentlich die Lösung $U aber das funktioniert nicht bei mir. Ich habe es in vermeintlich allen Varianten getestet, nie wandelt er um, vermutlich weil er das U auf den - nicht aber auf das folgende kleine l bezieht.


Sad Sad

Gruß Wolke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Di Okt 16, 2007 2:23 pm    Titel: Antworten mit Zitat

Hallo wolke,

Probier mal so:

Code:
Var1 = Marie - Luise
Var2 = Marie-Luise
Var3 = Marie-luise

NewStr1 := RegExReplace(Var1, "\b([\w]+)\s?-\s?([\w]+)\b", "$1-$T2")
NewStr2 := RegExReplace(Var2, "\b([\w]+)\s?-\s?([\w]+)\b", "$1-$T2")
NewStr3 := RegExReplace(Var3, "\b([\w]+)\s?-\s?([\w]+)\b", "$1-$T2")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%

__________________
Gruß AGU
Nach oben
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1896
Wohnort: Österreich

BeitragVerfasst am: Di Okt 16, 2007 2:25 pm    Titel: Antworten mit Zitat

Ich habe keine Lösung gefunden wie man die Leerzeichen vor und nach dem Bindestrich noch im selben Schritt entfernt, aber das funkt:

Code:
Var1 = Marie - Luise
Var2 = Marie - luise
Var3 = Marie-Luise
Var4 = Marie-luise

NewStr1 := RegExReplace(Var1, " ?- ?[a-z]", "$T0")
NewStr2 := RegExReplace(Var2, " ?- ?[a-z]", "$T0")
NewStr3 := RegExReplace(Var3, " ?- ?[a-z]", "$T0")
NewStr4 := RegExReplace(Var4, " ?- ?[a-z]", "$T0")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%`n%NewStr4%

NewStr1 := RegExReplace(NewStr1, " ?- ?", "-")
NewStr2 := RegExReplace(NewStr2, " ?- ?", "-")
NewStr3 := RegExReplace(NewStr3, " ?- ?", "-")
NewStr4 := RegExReplace(NewStr4, " ?- ?", "-")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%`n%NewStr4%
Edit: AGUs-Variante gewinnt Wink
_________________
Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AGU
Gast





BeitragVerfasst am: Di Okt 16, 2007 2:37 pm    Titel: Antworten mit Zitat

Anscheinend war das Pluszeichen in meinem aller ersten Versuch nur falsch platziert. Gegangen wäre nämlich auch:

Code:
Var1 = Marie - Luise
Var2 = Marie-Luise
Var3 = Marie-luise

NewStr1 := RegExReplace(Var1, "\b(\w+)\s?-\s?(\w+)\b", "$1-$T2")
NewStr2 := RegExReplace(Var2, "\b(\w+)\s?-\s?(\w+)\b", "$1-$T2")
NewStr3 := RegExReplace(Var3, "\b(\w+)\s?-\s?(\w+)\b", "$1-$T2")
MsgBox, %NewStr1%`n%NewStr2%`n%NewStr3%

_____________________
Gruß AGU
Nach oben
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Di Okt 16, 2007 4:11 pm    Titel: Antworten mit Zitat

Man da habt ihr Euch aber wieder ins Zeug gelegt und mir wirklich geholfen.

Vielen Dank, zum Testen komme ich erst heute Nacht und dann werde ich nochmal lange darüber nachdenken müssen Cool

Gruß Wolke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fredchf



Anmeldedatum: 18.09.2006
Beiträge: 717
Wohnort: Deutschland

BeitragVerfasst am: Di Okt 16, 2007 8:55 pm    Titel: Antworten mit Zitat

Hallo,
erstmal:
AGU hat Folgendes geschrieben:
Bin, wie schon oft erwähnt, kein ausgewiesener RegEx Experte.

So wenig Experte wären ich und viele Andere hier sicher auch gern!!! Crying or Very sad

Da ich heute Vormittag auch schon daran gearbeitet habe,wollte ich selbst eine Variante finden:
Code:
strin = "Marie-luise" oder "Marie - luise" soll werden zu "Marie-Luise"

newstr := RegExReplace(strin, "(-)(\s?)(\w)", "$1$T3")

MsgBox % "alt:`t" . strin . "`nneu:`t" . newstr

Ist sehr einfach gehalten und wandelt jeden ersten Buchstaben nach einem Bindestrich groß und entfernt evtl. Leerzeichen dazwischen.
_________________
Mit freundlichen Grüßen
fredchf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wolke



Anmeldedatum: 05.09.2007
Beiträge: 29

BeitragVerfasst am: Mi Okt 17, 2007 10:46 am    Titel: Antworten mit Zitat

Hi Fredchf

stimmt aber so nicht ganz, denn aus "Marie - luise" wird "Marie -Luise" und nicht "Marie-Luise".

Aber ich will nicht kritisieren, eher fragen, ob jemand eine Seite kennt oder irgendwo in der Hilfe etwas steht, was mir verständlich macht was der eigentliche Ersetzungsparameter macht, also hier "$1$T3". Bisher habe ich es einfach nicht verstanden.

Gruß Wolke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Mi Okt 17, 2007 10:55 am    Titel: Antworten mit Zitat

Zitat:
... ob jemand eine Seite kennt oder irgendwo in der Hilfe etwas steht, was mir verständlich macht was der eigentliche Ersetzungsparameter macht, also hier "$1$T3"
Die Erklärung findest du in der Doku. zum RegExReplace Befehl beim Parameter "Replacement".

Denick hat die Doku sogar bereits übersetzt. Es wird aber noch ein bisschen dauern, bis diese in eine neue Version der deutschen CHM Einzug hält.
Auf denicks Autohotkey.net Account liegt die Übersetzung:
Arrow http://www.autohotkey.net/~denick/AHK_Hilfe/RegExReplace.htm

Ansonsten kannst du es auch mit der englischen Doku versuchen.
http://www.autohotkey.com/docs/commands/RegExReplace.htm
_____________________
Gruß AGU
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de