AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu RegEx-Formel

Ein Thema von Harry Stahl · begonnen am 16. Nov 2021 · letzter Beitrag vom 19. Nov 2021
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#1

Frage zu RegEx-Formel

  Alt 16. Nov 2021, 20:18
Ich beschäftige mich jetzt (seltsamerweise) zum ersten mal mit RegEX. Ich denke richtig benutzt könnte es mir die Arbeit beim Suchen nach oder Extrahieren von Text sehr hilfreich sein.

Nun gibt es leider so viele Möglichkeiten und Paramenter, dass ich da nicht so recht weiß, wie ich anfangen soll. Habe schon mal das Video von Bernd zum RegEx gesehen und mal ein wenig auf der regex101.com rumprobiert, nur leider will es nicht gelingen.

Ich möchte einen Text Zeilenweise durchgehen und da den Text, der am Anfang in Klammern steht extrahieren und auch den nachfolgenden Text, der in Hochkommata steht. Ein Beispiel:

DEr zu durchsuchende Text lautet:

"
urposes of their operation, use, protection and maintenance;
(2) ‘security of network and information systems’ means the ability of network and information systems to
"

Ich will hier also letztlich den Titel der Definition "security of network and information systems" rausfiltern, inclusive der vorangestellten Nummer (2).

Will also als Rückgabe haben:

(2) ‘security of network and information systems’

Kann mir jemand mal zum Einstieg die Lösung sagen, das würde mir sehr helfen und dann als Basis für mögliche Abwandlungen dienen können...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Frage zu RegEx-Formel

  Alt 16. Nov 2021, 22:00
Code:
\(\d\) [‘][a-zA-Z0-9\x20]+[’]
sollte so funktionieren - getestet mit https://regex101.com/

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Frage zu RegEx-Formel

  Alt 16. Nov 2021, 23:09
Code:
\(\d\) [‘][a-zA-Z0-9\x20]+[’]
sollte so funktionieren - getestet mit https://regex101.com/

Grüße
Klaus
Super funktioniert!

Demnach bedeutet: \(\d\) jedes Zeichen innerhalb der Klammern (warum steht vor den Klammern ein "\"?)
['] = Erfassung des Hochzeichens (am Anfang?)

[a-zA-Z0-9] = Alle Buchstaben und Zahlen. Wenn allerdings ein deutscher Umlaut im Text vorhanden ist, wird nichts gefunden. Muss also noch "üäöÄÖÜ" dazunehmen (auch ein $, § etc, wenn so was vorkommt. ein \d\ scheint damit nicht zu gehen

Wofür steht \x20 ? Dazu habe ich leider in der Doku nichts gefunden...

Aber echt cool. Ich glaube, wenn man das beherrscht wird man schnell Weltmeister im parsen...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Frage zu RegEx-Formel

  Alt 17. Nov 2021, 00:30
Ich empfehle dir da den RegexBuddy. Der Preis ist überschaubar und man erspart sich langes Suchen und Probieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Frage zu RegEx-Formel

  Alt 17. Nov 2021, 01:05
Danke Uwe, werde ich mir mal ansehen.

Das obige Beispiel habe ich noch etwas verbessern können, so dass nun auch (10) oder (1a) oder (18b) oder auch zwei Leerzeichen zwischen dem Text erkannt werden:

\(d*.+\) +[‘][a-zA-Z0-9\x20]+[’]
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Frage zu RegEx-Formel

  Alt 17. Nov 2021, 07:12
Hallo Uwe,

der Backshlash wurd zum Escapen benutzt - d.h in der Regel folgt dort ein Zeichen das anders interpretiert werden soll.

\x20 bildet ein Leerzeiche ab. Onne dem \x20 würde nur das erste Wort gefunden werden.
\d steht für eine einzelne Zahl (digit)
\d+ dann muss dort ein oder mehrere digits vorhanden sein
Der Punkt bildet irgendein Zeichen ab.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
83 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Frage zu RegEx-Formel

  Alt 17. Nov 2021, 09:30
Anfängerfrage.
Falls immer gleiche Muster gesucht wird, reicht es nicht so: (\(\d+\).*?)’
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Frage zu RegEx-Formel

  Alt 17. Nov 2021, 10:44
in der Tat - die Welt kann so einfach sein )

Code:
(\(\d+\s*\S*\).*?)’
findet auch (2abc) ... oder (2 abc) ...

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Frage zu RegEx-Formel

  Alt 18. Nov 2021, 23:56
Ja, super, vielen Dank, funktioniert perfekt.

Falls von Interesse, wofür ich das gebraucht und letztlich verwendet habe, dann kann man sich das hier ansehen:

Exakte Stelle : https://youtu.be/JOBXRD5twWY?t=135
oder
das ganze Video (8 Min): https://youtu.be/JOBXRD5twWY
um den Kontext besser zu verstehen.

Was mir nicht gelungen war, ist einen Text auszuschließen, hätte gedacht es würde mit "(?!Absatz)" funktionieren, um das Wort "Absatz" auszuschließen (siehe auch anliegenden Screenshot).
Was mache ich da falsch?
Miniaturansicht angehängter Grafiken
regex-sample.png  

Geändert von Harry Stahl (19. Nov 2021 um 00:13 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Frage zu RegEx-Formel

  Alt 19. Nov 2021, 18:20
.. Du köntest es mal so versuchen

Code:
(^§.*\d*.*)Absatz(.*)|(^§.*\d*\s*)
Grüße
Klaus
Miniaturansicht angehängter Grafiken
match.png  
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz