AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regex Erläuterungen

Ein Thema von sko1 · begonnen am 12. Dez 2024 · letzter Beitrag vom 20. Dez 2024
Antwort Antwort
Stolle58

Registriert seit: 4. Aug 2023
Ort: Frankfurt
32 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 17:13
z.B. "WZ 123456" oder "12.123.45678" in der Rechnungsnummer steht.
So wie Ich es verstanden habe, möchte er nach diesem Muster Im Rechnungsfeld suchen, dafür steht mein Regex.

Sollte ich mich Irren, sind die Mustervorgaben von "sko1" Falsch (Illegal) bei Datev.
Reinhold
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.352 Beiträge
 
Delphi 12 Athens
 
#2

AW: Regex Erläuterungen

  Alt 13. Dez 2024, 21:09
Es gibt da einen zweiten RegEx in Post #13.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Regex Erläuterungen

  Alt 14. Dez 2024, 08:59
Zitat:
Sollte ich mich Irren, sind die Mustervorgaben von "sko1" Falsch (Illegal) bei Datev.
Welche Mustervorgabe soll da falsch sein?
Und Ja, Du hast es richtig erkannt, es geht um Datev, wo ich bisher beim Export zu Datev dem Anwender angezeigt habe "ungültiger Inhalt" und das soll insofern erweitert werden, dem Anwender zu zeigen welche Zeichen da nicht erlaubt sind (und das für alle Felder, nicht nur die Rechnungsnummer)!

Ciao
Stefan
  Mit Zitat antworten Zitat
Stolle58

Registriert seit: 4. Aug 2023
Ort: Frankfurt
32 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Regex Erläuterungen

  Alt 15. Dez 2024, 08:25
"WZ 123456" oder "12.123.45678" sind dann Falsch, wenn Leerzeichen und Punkt ungültige Zeichen sind.
Reinhold
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Regex Erläuterungen

  Alt 15. Dez 2024, 09:36
Dann brauche ich einen anderen Ansatz, um auch bei komplexen Vorgaben unerlaubte Zeichen zu finden:

Aus der Hilfe:
Matches gibt alle Übereinstimmungen zurück, die im Input-String als eine TMatchCollection-Instanz vorhanden sind

Also wollte ich mit der originalen Regex eine MatchCollection haben und deren Länge auswerten:
Delphi-Quellcode:
var
  res: TMatchcollection;
begin
  // Pattern ist '^[a-zA-Z0-9$%&;\*\+\-/]{1,36}$'
  res := TRegEx.Matches(AttributInhalt, pattern);
  if res.count <> Length(Attributinhalt) then
   ...
  begin
res.count aber ist immer = 0
Irgendwas mache ich immer noch falsch

Ciao
Stefan
  Mit Zitat antworten Zitat
shebang
Online

Registriert seit: 7. Feb 2020
144 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Regex Erläuterungen

  Alt 15. Dez 2024, 10:01
Irgendwie drehen wir uns aktuell etwas im Kreis.

Dein Pattern überprüft, ob dein Input exakt der Vorgabe entspricht. Wenn das nicht der Fall ist, dann ist das Ergebnis natürlich leer. Das "^" und "$" am Anfang und Ende des Pattern steht für den Anfang und das Ende deines Inputs.

Wenn du die jedes Zeichen einzeln prüfen willst, dann könntest du das Pattern "[a-zA-Z0-9$%&;\*\+\-\/]" verwenden.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Regex Erläuterungen

  Alt 15. Dez 2024, 10:10
Du hast schon Recht, ich dreh mich im Keis...
Ich muss doch nur unerlaubte Zeichen in einem String finden die nicht der vorgegebenen Expression entsprechen...

Bei dem einfachen Beispiel kann ich die Expression ja negieren, wie aber bei solchen Konstrukten wie
'^([A-Z]{4}[A-Z]{2}([A-Z0-9]){2}([A-Z0-9]){0,3})$'

Ich hatte nun die Idee den zu untersuchenden Inhalt zeichenweise per Match zu testen bis keine Übereinstimmung mehr vorliegt
also
Zeichen 1 prüfen
Zeichen 1..2 prüfen
Zeichen 1..3 prüfen
Zeichen 1..4 prüfen
usw.
aber auch da schlägt die Längenprüfung zu

Deshalb der Ansatz per Matches in der Hoffnung, dass da aller erlaubten Zeichen enthalten sind (also ohne den Pattern zu negieren) nur funktioniert das so leider nicht!

Es muss dafür doch irgendeine Lösung geben!

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz