Thread Regex: Suchen innerhalb eines Matches?
(8 answers)
Opened by Muffi at 2014-12-17 10:38
Hallo Muffi,
auf der Grundlage von Renees Vorschlag mit lookahead und negative lookahead, was Dein Editor vielleicht nicht kann: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #!/usr/bin/perl use strict; use warnings; my $s = <<ENDSTRING; TFoo = record ... no functions here ... end; TFoo = record ... event01 here function Bar(): Integer; ... end; TFoo = record ... no functions here eventually event02 here no functions here ... end; TFoo = record ... function Bas(): Integer; event03 here ... end; TFoo = record ... no functions here ... end; TFoo = record ... event04 here function Bat(): Integer; event05 here ... end; TFoo = record ... no functions here ... end; TFoo = record ... function Bau(): Integer; ... end; TFoo = record ... no functions here ... end; ENDSTRING print for $s =~ m{ (record (?:[^e]|\we|\be(?!nd;))+? function \s+ \w+\(\) .+? end; \s*) }xmsg; HTH Grüße payx EDIT: \b vor e(?!nd;\b) entfernt, weil sonst keine anderen e im Block stehen dürften. (Damit tritt aber das von clms genannte Problem wieder auf.) EDIT 02: Jetzt wieder mit \b und etwas vereinfacht. Das sollte passen. Last edited: 2014-12-17 14:05:44 +0100 (CET) |