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" <ernst.huegli@bluewin.ch>
An users@de.libreoffice.org
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: users+unsubscribe@de.libreoffice.org
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: users+unsubscribe@de.libreoffice.org
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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.