[kde-de] KDE's reguläre Ausdrücke - non-greedy-Operator?

Sebastian Voitzsch Sebastian.Voitzsch at web.de
Di Jul 29 11:52:09 CEST 2003


On Tuesday 29 July 2003 11:19, Marco Ladermann wrote:
> Am Dienstag, 29. Juli 2003 10:36 schrieb Sebastian Voitzsch:
> > Hallo,
> >
> > welches Zeichen wird innerhalb der regulären Ausdrücke als
> > non-greedy-Operator verwendet? Von PHP kenne ich "?", aber das tut
> > anscheinend nicht:
>
> Bei den Filterbedingungen wähle "passt auf regulären Ausdruck" und drücke
> den "Bearbeiten" Knopf. Dann kannst Du mit der KRegEdit Komponente
> arbeiten. Für das was möglich ist, siehe auch
> http://doc.trolltech.com/3.1/qregexp.html. Soweit ich das sehe, gibt es

Das war der gesuchte Link, danke! Aber TrollTech hat die RegExps hier 
entscheidend kastriert:

"QRegExp's quantifiers are the same as Perl's greedy quantifiers. Non-greedy 
matching cannot be applied to individual quantifiers, but can be applied to 
all the quantifiers in the pattern. For example, to match the Perl regexp 
ro+?m requires: 

    QRegExp rx( "ro+m" );
    rx.setMinimal( TRUE );"

Da der RegExp-Editor keine Einstellung bietet (oder ich sie nicht gefunden 
habe?!) sind die WildCard-Operatoren nahezu nutzlos - und die RegExps damit 
auch. Selbiges gilt für die case-sensitivy-Einstellung - auch nur im 
Programmquelltext änderbar.

> Statt "<!--.*?-->" kannst du ja auch 'mal "<!--([^-]|-[^-]|--[^>])*-->"
> probieren.

Hmm? Hab ich da was verpaßt? Da habe ich ja wieder ein gieriges * drin, was 
mir die ganze Mail bis zum letzten --> "frißt". Welche Zeichen genau in den 
Kommentaren stehen, weiß ich ja gerade nicht. [a-z] geht nicht - sind 
teilweise auch Buchstaben und Blanks drin. Das Problem an diesen Mails ist, 
daß die Kommentare wahllos in die Worte eingestreut werden. Mailclients mit 
HTML-Anzeige blenden die Kommentare aus und zeigen nur den "Klartext" an. Das 
ganze sieht dann so aus:

Di<!--asdfkljasflaj-->es is<!--asdfljafkl-->t ein Tes<!--asdflajsflj-->ttext.

Will ich die Buchstaben 'v', 'i', 'a', 'g', 'r', 'a' im Zusammenhang, 
höchstens unterbrochen durch Kommentare haben, komme ich nicht ohne 
non-greedy aus, will mir scheinen - oder irre ich mich? Im obigen Beispiel 
würde der greedy-Operator alles nach "Di" bis zu "ttext" matchen, alles, was 
dazwischen liegt, fällt für eine Auswertung flach.

Gruß,
Sebastian