[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