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


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.