MyBB.de Forum

Normale Version: Regex JavaScript/JQuery für wörtliche Rede
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Halli-Hallo,

ich würde mir gerne ein Plugin schreiben, das per Knopfdruck wörtliche Rede in meinen Posts highlighted. Also beginne ich mal damit, mir den richtigen RegEx dafür herauszusuchen. Da habe ich schon Probleme mit, weil ich nicht gerade der RegEx-Spezialist bin...

Ich habe zwei RegEx-Seiten gefunden, die mir meinen Code prüfen, beide kommen zu unterschiedlichen Ergebnissen. Was natürlich doof ist.

Mein Ausgangspunkt:
RegEx
Code:
([„]([^„]+)[“]|[“]([^“]+)[”]|["]([^"]+)["])
Option
Code:
/g

Beispieltext: 3 mal der gleiche Absatz mit den 3 möglichen Varianten von wörtlicher Rede:
Zitat:Then he spoke! Finally! Reached out his hands. He wanted… the dead baby rabbit? That was what this was all about? Aiden just wanted the little thing in his hands? "Well, just ask, right?" Grayson tried a smile and laid the small, dead and very bloody body into his brother’s hands. "Don’ you worry. Just ask. You can have it." Aiden could get everything Grayson had, there was never a doubt. He even would have given him any ice cream or sweet he ever wanted. Because it was Aiden. "Is everythin' okay now?" Was Aiden happy now? Well…. as happy as Aiden could get. He didn’t look like it. But he never looked happy, anyway.


Then he spoke! Finally! Reached out his hands. He wanted… the dead baby rabbit? That was what this was all about? Aiden just wanted the little thing in his hands? „Well, just ask, right?“ Grayson tried a smile and laid the small, dead and very bloody body into his brother’s hands. „Don’ you worry. Just ask. You can have it.“ Aiden could get everything Grayson had, there was never a doubt. He even would have given him any ice cream or sweet he ever wanted. Because it was Aiden. „Is everythin’ okay now?“ Was Aiden happy now? Well…. as happy as Aiden could get. He didn’t look like it. But he never looked happy, anyway.


Then he spoke! Finally! Reached out his hands. He wanted… the dead baby rabbit? That was what this was all about? Aiden just wanted the little thing in his hands? “Well, just ask, right?” Grayson tried a smile and laid the small, dead and very bloody body into his brother’s hands. “Don’ you worry. Just ask. You can have it.” Aiden could get everything Grayson had, there was never a doubt. He even would have given him any ice cream or sweet he ever wanted. Because it was Aiden. “Is everythin’ okay now?” Was Aiden happy now? Well…. as happy as Aiden could get. He didn’t look like it. But he never looked happy, anyway.



Ich zeig erstmal die Seite, die ihn mit diesem Code genau so darstellt, wie ich das Ergebnis gern hätte:
http://scriptular.com/

[attachment=10906]


Folgende Seite markiert in dem selben Code dann allerdings markierte Abschnitte im Beispieltext, die ich logischerweise nicht gern hätte:
https://regex101.com/r/eZ1gT7/306

[attachment=10907]


Kann mir jemand helfen? Was ist nun richtig?
Oder vielleicht noch wichtiger: Wie wäre der richtige RegEx, wenn meiner falsch ist? Smile

LG
Ama
Nur mal so als Idee von mir. MyBB hat ja auch seinen highlight regex, vieleicht könnte dieser auch bei dir funktionieren.
Aber der sucht Begriffe, oder? Nicht Text innerhalb von zwei Zeichen. Smile
Wenn man die gesuchte Passage eingibt, wird, wenn vorhanden, gehighlight. Einzelne Wörter leider aber auch, wie ich eben sehe. Mit der Suchfunktion kann man dies gut testen.
Ich suche alles, was zwischen zwei Anführungszeichen vorkommt, was gebe ich denn dann in die Suchfunktion ein?
(23.02.2016, 10:15)Amaryllion schrieb: [ -> ]Ich habe zwei RegEx-Seiten gefunden, die mir meinen Code prüfen, beide kommen zu unterschiedlichen Ergebnissen. Was natürlich doof ist.
Es gibt unterschiedliche Implementierung für reguläre Ausdrücke, jede Script-Sprache hat da ihre Besonderheiten. Falls du das ganze also mit PHP umsetzen willst, teste es direkt mit PHP.

Ansonsten probiere es mal mit folgendem Regex:
Code:
([„]([^„“]+)[“]|[“]([^“”]+)[”]|["]([^"]+)["])
Hey, total klasse! Vielen Dank! Smile

Ja, ich will die Umsetzung erstmal mit Javascript versuchen. Somit ist das genau das Richtige. Smile
Wah, ich stelle gerade fest, mir fehlt noch was zum endgültigen Glück. Könntest Du mir den von Dir gegebenen RegEx noch dahingehend ergänzen, daß er KEINE Anführunsgzeichen berücksichtigt, die INNERHALB von Tags vorkommen?

Also beispielsweise in sowas hier:
Code:
<span class="xyz">

Weil... das zerwürfelt natürlich alles. Rolleyes
So, wenn man nicht jede Idee gleich ausprobiert, muß man viel editieren... Wink
Ich bin jetzt bei diesem hier gelandet:
Code:
(?![^<]*>)([„]([^„“]+)[“]|[“]([^“”]+)[”]|["]([^"]+)["])(?![^<]*>)

Der funktioniert:
https://regex101.com/r/eZ1gT7/308