Hallo Ernst,
der nachfolgende RexExp sollte funktionieren:
^(?!\d{4}-\d{2}-\d{2}).*?$|^(\d{4}-\d{2}-\d{2}[a-zA-Z0-9
\Q^°"²§³$%&/{([)]=}?\`´@€*+~'#<>|;,:.-_\E])
ERLÄUTERUNG
Das Datum habe die Form: AAAA-BB-CC mit A,B,C = Ziffer
Der RegExp besteht aus 2 Teilen, getrennt durch "|" (bedeutet ODER):
"^(?!\d{4}-\d{2}-\d{2}).*?$" und "^(\d{4}-\d{2}-\d{2}[a-zA-Z0-9
\Q^°"²§³$%&/{([)]=}?\`´@€*+~'#<>|;,:.-_\E])"
LINKER TEIL
"^(?!\d{4}-\d{2}-\d{2}).*?$"
Basiert auf der Anwendung von "negative look-ahead assertion".
"negative look-ahead assertion" funktioniert - im Sinne von "etwas
finden" - aber nur, wenn ".*?$" angehängt ist.
Siehe:
https://ngb.to/threads/erledigt-regul%C3%A4re-ausdr%C3%BCcke-negieren.1559/#post-35642
Das angehängte ".*?$" hat aber zur Folge, dass Ausdrücke mit Zeichen
nach "CC" nicht gefunden werden.
RECHTER TEIL
"^(\d{4}-\d{2}-\d{2}[a-zA-Z0-9
\Q^°"²§³$%&/{([)]=}?\`´@€*+~'#<>|;,:.-_\E])"
Dieser Teil dient dazu, alles zu finden, bei dem nach "CC" noch ein
weiteres Zeichen vorkommt.
Buchstaben "a-zA-Z", Ziffern "0-9", Leerzeichen " " und alle
Sonderzeichen auf der Tastatur "^°"²§³$%&/{([)]=}?\`´@€*+~'#<>|;,:.-_"
(das sind hier alle Zeichen zwischen "\Q" und "\E").
"\Q ... \E" bedeutet, dass alle Zeichen dazwischen automatisch mit "\"
maskiert werden. Manche Sonderzeichen haben eine Steuerfunktion. Damit
diese als Zeichen erkannt werden, muss man sie mit "\" maskieren. Damit
man sich nicht merken muss, welche Zeichen maskiert werden müssen, kann
man auch einfach alle Sonderzeichen maskieren.
TEST
Ein paar Beispiele, mit denen ich getestet habe:
1111-22-33
1111-22-33
11110-22-33
1111-220-33
1111-22-330
1111+22+33
1111-22-3A
1111-22-33?C1
111X+2X2
1111-22-33_
1111-22-33"
Bis auf die 1. Zeile wird alles gefunden.
Die 2. Zeile wird gefunden, weil da noch - in der CALC-Tabelle - ein
rechtsbündiges Leerzeichen angefügt ist.
HINWEISE
Vielleicht gibt es für den rechten Teil auch noch eine
elegantere/kürzere Formulierung ...
Der RegExp ist zwar etwas länger, aber wenn man ihn in eine eine
TEXT-Datei kopiert, kann man ihn einfach in die Zwischenablage kopieren
und dann bei "Suchen und ersetzen" in die "Suchen"-Zeile rein-kopieren.
Häkchen bei "Reguläre Ausdrücke" setzen NICHT VERGESSEN !!!
Mit dem RegExp (s.o.) findest Du aber nur Datumsangaben, die nicht der
Form "AAAA-BB-CC" entsprechen. Inhaltlich falsche Datumsangabe, wo
beispielsweise der Februar 31 Tage hat, findest Du damit nicht.
Die RegExp-Programmiersprache basiert auf dem Grundprinzip etwas zu
finden, weshalb man mit regulären Ausdrücken immer nur etwas finden
kann, was zutrifft, aber nicht etwas, was NICHT zutrifft.
LIBRE OFFICE - HILFE
[...] Für eine vollständige Liste der unterstützenden Metazeichen und
Syntax siehe die ICU Dokumentation der regulären Ausdrücke (englisch)
<https://unicode-org.github.io/icu/userguide/strings/regexp.html>. [...]
Ich hoffe, das hilft Dir weiter,
Grüße
Hans-Werner ;-))
--
Liste abmelden mit E-Mail an: users+unsubscr...@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