 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
wolke
Anmeldedatum: 05.09.2007 Beiträge: 29
|
Verfasst am: Di Okt 16, 2007 9:38 am Titel: Regex Frage |
|
|
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
Wolke
[/code]
Zuletzt bearbeitet von wolke am Mi Okt 17, 2007 9:57 am, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
msgbox
Anmeldedatum: 05.05.2007 Beiträge: 778 Wohnort: C:\
|
Verfasst am: Di Okt 16, 2007 10:09 am Titel: |
|
|
Versuch es mal mit IfInString wäre etwas einfacher als RegEx  _________________
msgbox, 1577008, Ich bin msgbox, Teste mich mal |
|
| Nach oben |
|
 |
Hasso
Anmeldedatum: 17.11.2005 Beiträge: 104 Wohnort: Hamburg
|
Verfasst am: Di Okt 16, 2007 10:46 am Titel: |
|
|
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 |
|
 |
wolke
Anmeldedatum: 05.09.2007 Beiträge: 29
|
Verfasst am: Di Okt 16, 2007 11:04 am Titel: |
|
|
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 |
|
 |
BoBo¨ Gast
|
Verfasst am: Di Okt 16, 2007 11:15 am Titel: |
|
|
| Benutze Titan's "RegEx Analyzer" (die AHK RegEx Syntax orientiert sich an Perl) |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Di Okt 16, 2007 11:18 am Titel: |
|
|
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.
| 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.
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
|
Verfasst am: Di Okt 16, 2007 11:31 am Titel: |
|
|
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 |
|
 |
wolke
Anmeldedatum: 05.09.2007 Beiträge: 29
|
Verfasst am: Di Okt 16, 2007 12:29 pm Titel: |
|
|
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.
Gruß Wolke |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Di Okt 16, 2007 2:23 pm Titel: |
|
|
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
|
Verfasst am: Di Okt 16, 2007 2:25 pm Titel: |
|
|
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  _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Di Okt 16, 2007 2:37 pm Titel: |
|
|
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
|
Verfasst am: Di Okt 16, 2007 4:11 pm Titel: |
|
|
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
Gruß Wolke |
|
| Nach oben |
|
 |
fredchf
Anmeldedatum: 18.09.2006 Beiträge: 717 Wohnort: Deutschland
|
Verfasst am: Di Okt 16, 2007 8:55 pm Titel: |
|
|
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!!!
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 |
|
 |
wolke
Anmeldedatum: 05.09.2007 Beiträge: 29
|
Verfasst am: Mi Okt 17, 2007 10:46 am Titel: |
|
|
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 |
|
 |
AGU Gast
|
Verfasst am: Mi Okt 17, 2007 10:55 am Titel: |
|
|
| 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:
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 |
|
 |
|
|
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
|