Date: prev next · Thread: first prev next last
2022 Archives by date, by thread · List index


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+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.