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