Hallo Ernst,

das ist leider nicht so einfach. Das hier ( negative look-ahead assertion => https://unicode-org.github.io/icu/userguide/strings/regexp.html )

^(?!\d{4}-\d{2}-\d{2}).*?$

funktioniert - fast. Lediglich Datumsangaben, bei denen der letzte Datumswert (ganz rechts) mehr als 2 Stellen hat [1], werden nicht gefunden

1111-22-33
11110-22-33 Wird gefunden !
1111-220-33  Wird gefunden !
1111-22-330 [1]
1111+22+33  Wird gefunden !
1111-22-3A Wird gefunden !
1111-22-33B [1]

Das hat damit zu tun: https://ngb.to/threads/erledigt-regul%C3%A4re-ausdr%C3%BCcke-negieren.1559/#post-35642

Damit es funktioniert, wird noch .*?$ angehängt, damit aus dem leeren String ein Match wird, aber leider mit dem [1]-Nachteil. Wie man das kompensieren kann, weiß ich leider nicht ...

[1] kannst Du dann noch mit einem 2 Suchdurchgang

^(\d{4}-\d{2}-\d{3,})

finden.

Grüße
Hans-Werner ;-))

------ Originalnachricht ------
Von "Ernst Hügli" <[email protected]>
An [email protected]
Datum 01.11.2022 14:41:41
Betreff [de-users] Negation in RegEx-Ausdrücken

Hallo Listige

Angeregt durch Jürgens Antwort im Thread vom Wochenende "Calc: Text verketten, 
..." habe ich begonnen, mich mit RegEx zu beschäftigen. Da ich mich momentan 
gleichzeitig damit beschäftige, ein Textbook zu verfassen, wie man praktische Statistik 
mit Calc betreiben kann, bin ich auf folgendes Problem gestossen:

In einer grossen Tabelle (mehrere hundert Entries) mit Datum-Werten in einer 
Spalte zeigt eine Auswertung mit den Funktionen =ANZAHL() und =ANZAHL2(), dass 
mehrere Werte falsch eingegeben wurden und deshalb als Text interpetiert 
werden. Diese Zellen händisch zu suchen wäre ein ziemlicher Aufwand. In meiner 
Einschätzung wäre das aber genau ein Fall für eine Suche mit RegEx-Option ... 
Soweit, so gut. Mit dem von Jürgen angegebenen RegEx-Ausdruck 
^(\d{4}-\d{2}-\d{2}) finde ich alle Ausdrücke, die korrekt formatiert sind, die 
falsch formatierten (weil fehlerhaft eingegebenen) Zellen werden übersprungen. 
Zwar funktioniert das Ganze also, ist aber gegenüber der händischen Version 
nicht wirklich eine Erleichterung. Besser wäre es, den Ausdruck zu negieren, 
dann müsste Calc die falschen Werte direkt finden. Doch es ist verhext: alle 
Varianten der Negation, die ich im Netz gefunden und ausprobiert habe, 
funktionieren nicht. Wie geht das mit dem Negieren in Calc korrekt? Für einen 
Denkanstoss bin ich Euch sehr dankbar ...

PS1.

In einzelnen Posts zum Thema "Negation von RegEx-Ausdrücken" habe ich den Rat 
gefunden, man solle die Bedingung besser positiv formulieren. Das Beispiel zeigt, dass 
eben manchmal wirklich nur eine Negation eine brauchbare Lösung bringt.

PS2.

Ich weiss natürlich auch, dass man das Problem auch mit einer Werthervorhebung 
lösen könnte. Aber da Datumwerte Zahlen sind, werden sie blau hervorgehoben, 
Texte aber schwarz. Okay, diese Farben könnte man in den Optionen ändern - aber 
bei sehr grossen Tabellen (wie sie eben gerade beim praktischen Einsatz von 
Calc für Statistik-Aufgaben vorkommen können) ist das keine sichere Lösung.

Besten Dank und noch einen schönen Tag

Freundlich grüsst

Ernst



-- Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
--
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an