Jörg Schmidt wrote:
Hallo Andreas, *,

Andreas Saeger schrieb:
Fehlerhaft:
1. Seit Jahren gibt es *mindestens* einen ungefixten bug: einfach mal
=SUCHEN("[:digit:]";A1) mit irgendeiner einer Zahl in A1 testen.

issues habe ich gesucht und finde mir Suchworten "[:digit:]" und "regex"
letztlich 16 bzw. 24 Treffer, keiner jedoch passt meiner Erkenntnis nach
auf das Problem dieser Formel.

Wenn ich selbst mir nochmals die regulären Ausdrücke in dr Hilfe
durchlese finde ich selbst auch die Formel falsch, denn ich würde sie
z.B. formulieren mit:
=SUCHEN("[:digit:]?";A1)

was dann jedoch zu einem, in meinen Augen richtigem Ergebnis führt.

Im Grunde haben wir damit schon den nächsten Fehler: Eine oder null Ziffern zu suchen macht für sich allein gar keinen Sinn. An welcher Position befindet sich "eine oder keine Ziffer"?

Die benannten Klassen sind normalerweise in zwei eckigen Klammern und [^[:digit:]] findet irgendein Zeichen welches keine Ziffer ist.
Mein Texteditor erwartet weitere Infos wenn ich nach [[:digit:]]? suche.
[[:digit:]].? ist dagegen sinnvoll. Das findet eine Ziffer gefolgt von irgendeinem oder keinem anderen Zeichen. [[:digit:]] findet eine Zifffer irgendwo. Beide Suchausdrücke beziehen sich jeweils auf mindestens ein konkretes Zeichen.

Wo ist hier der Fehler in meinen Überlegungen bzw. was ist der passende
issue?

Der Issue ist http://www.openoffice.org/issues/show_bug.cgi?id=64368
Alle Regexes scheitern wenn eine benannte Klasse am Ende des Ausdrucks steht.

3. Erkläre mal einem Gegenüber (ohne die Hände zu gebrauchen)
wie man in
Writer einen einen weiche Zeilenumbrüche mit harten ersetzt
(\n durch \n
ersetzen).

hatten wir neulich im Forum als Frage und dafür gibt es wohl eine
Extension

Eine Extension. Na toll.

2. Vergleiche den Regex-Dialekt von OOo mit den POSIX-konformen
Varianten in gängigen Programmierwerkzeugen und Texteditoren:
[^[:digit:]]
4. Erklär mir mal warum "$1" in Finden&Ersetzen "\1" im Zusammenhang
einer Formel sein muss.

Nö, wirklich nicht.

OK, das mit $1 und \1 geht wohl in Ordnung.
=SEARCH("([:digit:]{3})\1";A9) findet eine Sequenz von 3 Ziffern gefolgt von derselben Dreiersequenz, also z.B. 123123, 943943 oder 000000. Im Standardfilter funktioniert das auch mit derselben regex. \1 bezeichnet "dasjenige, was durch das erste Klammerpaar abgedeckt wird". Die Regex sucht also in den runden Klammern 3 Ziffern plus "dasselbe nochmal". In Finden&Ersetzen braucht es \1 um "dasjenige zu finden was durch das erste Klammerpaar abgedeckt wird" und $1 um es zu ersetzen.
Suche: ([:digit:]{3})\1
Ersetze: $1 $1
ersetzt die 6 Ziffern mit der Dreiersequenz, einem Leerzeichen und nochmal der Dreiersequenz, fügt also ein Leerzeichen ein.

Ich hatte zum Ausdruck gebracht das reguläre Ausdrücke nicht meine
Stärke sind, ich anderseits jedoch erlebe das andere damit virtuos
umgehen und von Dir höre ich nun das das alles in OOo fehlerhaft sein
soll und letztere Aussage steht für mich zunächst in Widerspruch zu dem
was andere sagen.
In dieser Situation hatte ich von Dir auf Erläuterungen Deiner Aussage
gehofft, die ihrer Natur nach auch das Ganze etwas zusammenhängend
einschätzen, denn es ist für mein Verständnis ein Unterschied ob etwas
'nur' etliche Fehler enthält oder ob etwas schon dem Grundsätzlichen
nach fehlerhaft (implementiert) ist - und Letzteres glaubte ich aus
Deiner Aussage zu regulären Ausdrücken in OOo entnehmen zu können.
Vielleicht nur ein Mißverständnis meinerseits?

Schalte doch einfach mal den ganzen Blödsinn aus und versuche
=ZÄHLENWENN($A$1:$A$999 ; "Ölspur")

ja, ich sehe. Das ist tatsächlich eine interessante Variante.



Gruß
Jörg

Ich halte Reguläre Ausdrücke in Tabellenkalkulationen für Blödsinn, besonders dann wenn viele Suchausdrücke über Tabellenzellen referenziert werden: VLOOKUP(X1;Bereich;2;0) mit eingeschalteten Regexes und "(Zusatz)" in X1 soll "(Zusatz)" finden und wenn man es herunterkopiert auch den Text in X2,X3,X4 usw., X1 findet aber auch "Zusatz" ohne Klammern weil die runden Klammern ohne Rückbezug keinerlei Bedeutung haben. In X1 müßte also \(Zusatz\) stehen, damit die Klammern als solche gefunden werden. Das Problem ist natürlich dasselbe mit allen Klammern und allen Zeichen .*?+\^$, die dann in allen Suchbegriffszellen mit \ versehen werden müssen. In den Foren taucht das Problem weit häufiger auf als irgenwelche Fragen über den korrekten Gebrauch von regulären Ausdrücken. Entweder weil es in Excel zufällig funktioniert oder weil es auch auf den zweiten Blick nicht einleuchten kann wenn man noch nie von regulären Ausdrücken gehört hat. Excel hat das gleiche Problem mit * und ? aber nicht mit all den anderen Zeichen. Meiner Meinung nach macht es Gnumeric mal wieder richtig: Mustererkennung in Formeln wird grundsätzlich nicht unterstützt. Wenn es mal benötigt wird, dann kann man SEARCH mit ?* verwenden.

In OOo unterstützt Base all die Textfunktionen, die 95% aller Benutzer verzweifelt in Calc suchen, einschließlich beliebig komplexer Filter mit Shellpatterns, beliebige Sortierungen, Abgleichen von Listen, Verketten von Listen, Duplikatsuche, Duplikatvermeidung und so weiter.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Antwort per Email an