![]() |
TRegex und Capture Groups
Eine dumme Frage. Ist das normal dass das Pattern an sich auch in der "Capture-Group" mit drinsteckt?
Folgendes Beispiel:
Delphi-Quellcode:
Ergibt:
program Project4;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.RegularExpressions; procedure regexTest(); const pattern: String = '(?''name''Delphi|C\+\+)-*(?''ort''\w+)'; subject: String = 'Ich gehe heute in die Delphi-Praxis. Danach auf den Delphischrottplatz. Und vielleicht in die C++-Bar.'; var regex: TRegex; match: TMatch; group: TGroup; begin regex := TRegex.Create(pattern); for match in regex.Matches(subject) do begin WriteLn('Match: '+match.Value.QuotedString()); for group in match.Groups do WriteLn(' '+group.Value.QuotedString()); WriteLn('Der Name ist '+match.Groups['name'].Value.QuotedString() ); WriteLn('Der Ort ist '+match.Groups['ort'].Value.QuotedString() ); WriteLn(sLineBreak); end; end; begin regexTest(); ReadLn; end.
Code:
Ich hätte den jeweils ersten Eintrag bei den Gruppen nicht erwartet.
Match: 'Delphi-Praxis'
'Delphi-Praxis' 'Delphi' 'Praxis' Der Name ist 'Delphi' Der Ort ist 'Praxis' Match: 'Delphischrottplatz' 'Delphischrottplatz' 'Delphi' 'schrottplatz' Der Name ist 'Delphi' Der Ort ist 'schrottplatz' Match: 'C++-Bar' 'C++-Bar' 'C++' 'Bar' Der Name ist 'C++' Der Ort ist 'Bar' |
AW: TRegex und Capture Groups
Wieso nicht?
Das ist der Treffer für den kompletten Ausdruck und dann folgen die geklammerten Untergruppen. Stell dir einfach nochmal eine implizite Klammer/Gruppe, um alles drumrum, vor.
Delphi-Quellcode:
'((?''name''Delphi|C\+\+)-*(?''ort''\w+))';
Es ist praktisch das, was man auch finden würde, wenn in der Anfrage garkeine Klammern vorkommen würden. |
AW: TRegex und Capture Groups
Hm weil ich dachte... Der komplette Ausdruck ist der Match selber. Den habe ich ja schon in
Delphi-Quellcode:
. Und die Gruppen darin sind unter
Match.Value
Delphi-Quellcode:
.
Match.Groups
Zitat:
|
AW: TRegex und Capture Groups
Delphi macht hier praktisch garnichts.
Die benutzten einfach einen externen Perl-kompatiblen RegEx-Code und diese sollte schon richtig funktionieren. |
AW: TRegex und Capture Groups
Naja, also ich brauche nur das Internet nach Delphi und TRegex zu befragen und finde mehrere Bugs, der letzte Fix grade jetzt in XE6. Mein vollstes Vertrauen habe ich darin nicht unbedingt :angel2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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