Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Frage zu einer Regexp (https://www.delphipraxis.net/75707-frage-zu-einer-regexp.html)

alcaeus 23. Aug 2006 20:35


Frage zu einer Regexp
 
Hallo ihr,

ich habe ein Problem mit folgender RegExp:
Code:
#(?<=.\W|\W.|^\W);\)(?=.\W|\W.|\W$)#
Diese RegExp wird so vom phpBB zusammengestellt, um Smileys zu parsen (in diesem Fall ;) ). Allerdings funktioniert sie nur teilweise, d.h. kommt der Smiley am Ende vom Text und teilweise sogar am Ende einer Zeile, so wird nichts gefunden.

Kann mir jemand erklaeren, was das Ding macht, und wie ich es umschreiben kann? Wichtig ist dabei, dass innerhalb von HTML-Tags nichts ersetzt wird; < und > werden zu &lt; bzw. &gt; escaped, es ist also nur auf < und > zu pruefen. Waere schoen wenn mir jemand helfen koennte :)

Greetz
alcaeus

Dax 23. Aug 2006 20:45

Re: Frage zu einer Regexp
 
Das Ding kuckt, ob zwischen Smiley und Zeilenanfang/-ende mindestens ein Zeichen oder Whitespace liegt.
So müsste es gehen:
Code:
#(?<=.\W|\W.|^);\)(?=.\W|\W.|$)#

alcaeus 23. Aug 2006 20:53

Re: Frage zu einer Regexp
 
Nein, leider negativ :(
Das lustige ist, hier in der DP funktionierts...in einem Vanilla-phpBB funktionierts, bei meinem neuen Forum jedoch nicht, und das obwohl ich an den Smileys nicht geschraubt habe (nein, ehrlich nicht)

Wie wuerde denn eine RegEx aussehn, welche nur prueft, ob der Text auch nicht in einem Tag vorkommt?

Sowas z.B. soll erlaubt sein (die Pipes stellen Text-Anfang und -Ende dar):
Code:
|;)|
Code:
|a ;)|
Code:
;) a|
Sowas allerdings nicht:
Code:
a;)
(Smiley direkt an einem Wort, oder auch in einem Wort)
Code:
<a href=";)">
Hast du da vielleicht einen Rat? :gruebel:

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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