[gelöst]Kleines Problem zu RegExp
Verfasst: 1. April 2008 09:27
Ich habe eine größere Anzahl an Checkbox, die alle mit cb_A_xy beginnen, wobei xy eine natürliche Zahl ist.
Jetzt möchste ich teile deser Boxen sperren. Dazu will ich die nötigen per findChildren ausfindig machen. D.h. xy ist quasi ein Intervall in dem ich sperren möchte, zb, alle Boxen cb_A_10 bis cb_A_20.
Ich habe mich bisher noch nie mit diesen RegExp auseinenandergesetzt, aber alle meine Versuche mittels den Qt Beispielen scheiterten.
Versuchte bereits sowas hier:
[cb_A_]+[10-20] oder cb_A_{1,1}+[10-20]{1,1}, wobei {1,1} eig obsolete sein sollte und ähnliche Varianten, inkl Wortgrenzen mit \b...\b
Irgendwie will das nit so recht klappen:(.
Muss auch zugeben habe jetzt nicht unbedingt viel Zeit mich da stundelang durch irgendwelche i-net Tutorials zu kämpfen.
Wenn wer die Lösung kennt würde ich mich sehr drüber freuen.
lg
EDIT:
Habe doch noch etwas Probiert und Foren gelesen. Das Problem trat bei den 2-stelligen Zahlen auf. Da kann man nicht einfach [10-20] schreiben. Zumindest kommt mir das so vor.
Anbei meine Lösung. Ob sie jetzt perfekt ist, oder es alles in einem geht, keine Ahnung, auf jeden Fall funktioniert sie:)
(QString s0)
Ich sperre immer von x-31. Ist auch die obere Grenze variabel, muss dort eben auch Unterschieden werden, ähnlich wie bei der Unteren.
Hoffe kann damit auch Anderen helfen, die ein ähnliches Problem haben.
Jetzt möchste ich teile deser Boxen sperren. Dazu will ich die nötigen per findChildren ausfindig machen. D.h. xy ist quasi ein Intervall in dem ich sperren möchte, zb, alle Boxen cb_A_10 bis cb_A_20.
Ich habe mich bisher noch nie mit diesen RegExp auseinenandergesetzt, aber alle meine Versuche mittels den Qt Beispielen scheiterten.
Versuchte bereits sowas hier:
[cb_A_]+[10-20] oder cb_A_{1,1}+[10-20]{1,1}, wobei {1,1} eig obsolete sein sollte und ähnliche Varianten, inkl Wortgrenzen mit \b...\b
Irgendwie will das nit so recht klappen:(.
Muss auch zugeben habe jetzt nicht unbedingt viel Zeit mich da stundelang durch irgendwelche i-net Tutorials zu kämpfen.
Wenn wer die Lösung kennt würde ich mich sehr drüber freuen.
lg
EDIT:
Habe doch noch etwas Probiert und Foren gelesen. Das Problem trat bei den 2-stelligen Zahlen auf. Da kann man nicht einfach [10-20] schreiben. Zumindest kommt mir das so vor.
Anbei meine Lösung. Ob sie jetzt perfekt ist, oder es alles in einem geht, keine Ahnung, auf jeden Fall funktioniert sie:)
Code: Alles auswählen
if (Bit_<10) {
s0="^cb_A_["+QString::number(Bit_)+"-9]$|cb_A_[1-3][0-9]$";
}
else if (Bit_<20 && Bit_>9) {
s0="^cb_A_[1]["+QString::number(Bit_-10)+"-9]$|cb_A_[2-3][0-9]$";
}
else if (Bit_>19 && Bit_<30) {
s0="^cb_A_[2]["+QString::number(Bit_-20)+"-9]$|cb_A_[3][0-9]$";
}
else if (Bit_>29) {
s0="^cb_A_[3]["+QString::number(Bit_-30)+"-1]$|cb_A_[3]["+QString::number(Bit_-29)+"-9]$";
}Ich sperre immer von x-31. Ist auch die obere Grenze variabel, muss dort eben auch Unterschieden werden, ähnlich wie bei der Unteren.
Hoffe kann damit auch Anderen helfen, die ein ähnliches Problem haben.