Regular Expressions für unsere Color-Tags: Wer kann es lösen?
Hi,
ich benötige bei unseren Regular Expressions mal etwas Hilfe. Der Color-Code in der Textformatierung funktioniert leider nicht einwandfrei. Evtl findet ihr eine gute Lösung. Hier die Bedingungen:
Der Text:
Hier die aktuelle RegEx Bedingung, die im Beispiel aber nicht funktioniert (ohne die Rauten im Text schon):
Hier die Seite, um das es zu prüfen: http://www.regexpal.com/
Ziel ist es, nur die beiden Color-Codes als Ergebnis zu bekommen.
Hier ein paar Hilfen zu den Regular Expressions: http://blog.weblogie.de/webentwicklung/merkblatt-regular-expressions/
Hier die PHP Doku zum Befehl, der verwendet wird: http://php.net/manual/en/function.preg-replace.php
Wer hat die Lösung? Er wird natürlich auch in der Release Note dankend erwähnt. Ruhm und Ehre winken!
Gruß
Frank
ich benötige bei unseren Regular Expressions mal etwas Hilfe. Der Color-Code in der Textformatierung funktioniert leider nicht einwandfrei. Evtl findet ihr eine gute Lösung. Hier die Bedingungen:
Der Text:
Dieser ##red|Text ist rot,## aber dieser hier nicht. Jetzt kommt die Raute ############ warum auch immer. Nun noch einmal ein ##green|grüner Text ## und zum Schluss noch eine Raute #. Die Farbe ist evtl aber auch ###ff9933|Text in orange.## Den Text muss keiner Verstehen ##
Hier die aktuelle RegEx Bedingung, die im Beispiel aber nicht funktioniert (ohne die Rauten im Text schon):
/([##]{2}(.+?)\|(.+?)[##]{2})/g
Hier die Seite, um das es zu prüfen: http://www.regexpal.com/
Ziel ist es, nur die beiden Color-Codes als Ergebnis zu bekommen.
Hier ein paar Hilfen zu den Regular Expressions: http://blog.weblogie.de/webentwicklung/merkblatt-regular-expressions/
Hier die PHP Doku zum Befehl, der verwendet wird: http://php.net/manual/en/function.preg-replace.php
Wer hat die Lösung? Er wird natürlich auch in der Release Note dankend erwähnt. Ruhm und Ehre winken!
Gruß
Frank
5 Antworten
- LÖSUNG 114757 schreibt am 11.03.2016 um 18:18:59 Uhr
- LÖSUNG keine-ahnung schreibt am 11.03.2016 um 18:19:30 Uhr
- LÖSUNG Sheogorath schreibt am 11.03.2016 um 18:45:17 Uhr
- LÖSUNG Arano schreibt am 11.03.2016 um 19:56:30 Uhr
- LÖSUNG Frank schreibt am 12.03.2016 um 03:25:13 Uhr
LÖSUNG 11.03.2016, aktualisiert um 19:12 Uhr
Hi Frank,
um eventuell nicht existierende Farben zusätzlich auszuschließen noch definierter
:
Gruß jodel32
p.s. Da gibt es noch einige andere Bugs, ich muss sie mal alle sammeln, sind doch einige die da zusammenkommen. Melde mich mal damit.
/#{2}([a-z]+|#[\da-f]{3,6})\|(.+?)#{2}/gi
/#{2}((AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGray|DarkGrey|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|Dar###ge|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkSlateGrey|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DimGrey|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gray|Grey|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGray|LightGrey|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSlateGrey|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|SlateGrey|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)|#[\da-f]{3,6})\|(.+?)#{2}/gi
p.s. Da gibt es noch einige andere Bugs, ich muss sie mal alle sammeln, sind doch einige die da zusammenkommen. Melde mich mal damit.
LÖSUNG 11.03.2016 um 18:19 Uhr
Moin Frank,
ich versteh zwar nur Bahnhof, aber wenn alle Stricken reissen sollten, schick ich Dir 'ne Packung Buntstifte ...
LG, Thomas
ich versteh zwar nur Bahnhof, aber wenn alle Stricken reissen sollten, schick ich Dir 'ne Packung Buntstifte ...
LG, Thomas
LÖSUNG 11.03.2016, aktualisiert um 18:47 Uhr
Moin,
naja, du musst nur ausschließen, dass davor Rauten kommen ;)
That's it.
Edit: Mal so nebenbei, ich bevorzuge https://regex101.com/ ;)
Gruß
Chris
naja, du musst nur ausschließen, dass davor Rauten kommen ;)
/[^#]*(#{2}([^#]+?)\|([^#]+?)#{2})[^#]*/g
That's it.
Edit: Mal so nebenbei, ich bevorzuge https://regex101.com/ ;)
Gruß
Chris
LÖSUNG 11.03.2016 um 19:56 Uhr
(! regexpal.de funktioniert bei mir nicht korrekt !)
Hi, Nabend,
ich habe auch was anzubieten: /(##([^#|]+?)\|(.+?)##)/g (oh, noch ein Bug !?)
Ich habe alle | im Text nummeriert und finde die folgenden Treffer: 1,4,11 und 12
Essen ist fertig, bis später
~Arano
Hi, Nabend,
ich habe auch was anzubieten: /(##([^#|]+?)\|(.+?)##)/g (oh, noch ein Bug !?)
/(##([^#|]+?)\|(.+?)##)/g
Ich habe alle | im Text nummeriert und finde die folgenden Treffer: 1,4,11 und 12
Dieser ###12345|1Ungültig,## dffdgd##|2ölasdlkasöl|3ajsj##as##as#d ddf dfg###12345|4Ungültig,## aber . Jetzt kommt die Raute ####|5ölsdkf###sd##fd#sfd|6sdy7||8<asölkasd adplasd9||10a###a#s#as#d#afg#df#ggfd#d#fg#dfg#####dfg#d#fg
##dfg#dfg###dfgdfgdf#g#fd##warum auch immer. Nun noch einmal ein ##green|11grüner Text ist gütig ## und zum Schluss noch eine Raute #.###asdasd|12asdad###
MATCH 1
1. [8-28] `##12345|1Ungültig,##`
2. [10-15] `12345`
3. [16-26] `1Ungültig,`
MATCH 2
1. [75-95] `##12345|4Ungültig,##`
2. [77-82] `12345`
3. [83-93] `4Ungültig,`
MATCH 3
1. [294-328] `##green|11grüner Text ist gütig ##`
2. [296-301] `green`
3. [302-326] `11grüner Text ist gütig `
MATCH 4
1. [364-382] `##asdasd|12asdad##`
2. [366-372] `asdasd`
3. [373-380] `12asdad`
Essen ist fertig, bis später
~Arano
LÖSUNG 12.03.2016, aktualisiert um 09:18 Uhr
BuHi,
vielen Dank an alle beteiligten User
Hätte gar nicht so viel Feedback auf eine Regular Expressions Frage erwartet. Bin leider kein Regular Expressions Gott und daher habe ich mal wieder was gelernt.
Zum Thema: Ich habe alle Ansätze getestet und mich für einen entschieden. Generell ist die Seite https://regex101.com/ tatsächlich besser als mein Vorschlag von oben. Ich kannte sie noch nicht, daher ein Dankeschön an @Sheogorath. Hier mein Kommentare zu den einzelnen Lösungen:
@114757,
Gotscha, hier passt alles. War ja auch blöd von mir zwei Rauten zu nehmen und diese dann nur einmal zu erlauben. Statt dessen eine Raute und sie zweimal zu erlauben ist sicherlich klüger. Dann die genaue Eingrenzung von A-Z für die Farbe oder den Farbcode mit 3 oder 6 Zeichen. Jap, das hatte ich komplett übersehen. Diese Variante habe ich gerade im aktuellen Release eingebaut.
ja klar, her damit, evtl können wir sie gemeinsam lösen. Gerne als PM oder hier als neuer Feedback-Beitrag.
@Sheogorath
Jap, auch diese Regel passt genau. Sie liefert aber zu viele Ergebnisse, bei langen Texten könnte das Performance kosten. Man müsste sie etwas vereinfachen.
@Arano
Auch diese Regel funktioniert, hat aber einen mini Fehler im Ergebnis, wenn ein Farbcode statt Farbname angegeben wird (wie z.B. ###ff9933. Den hatte ich allerdings in der ersten Version im Beispieltext oben auch nicht erwähnte, also meine Schuld).
Nein, ich filtere im normalen Text einige Zeichen einfach raus. Man muss schon die Code-Tags für solche Dinge nutzen.
Noch mal vielen Dank für die Lösungen. Die nächste Hilfeanfrage bei Regular Expressions wird sicherlich kommen
Gruß
Frank
vielen Dank an alle beteiligten User
Zum Thema: Ich habe alle Ansätze getestet und mich für einen entschieden. Generell ist die Seite https://regex101.com/ tatsächlich besser als mein Vorschlag von oben. Ich kannte sie noch nicht, daher ein Dankeschön an @Sheogorath. Hier mein Kommentare zu den einzelnen Lösungen:
@114757,
Gotscha, hier passt alles. War ja auch blöd von mir zwei Rauten zu nehmen und diese dann nur einmal zu erlauben. Statt dessen eine Raute und sie zweimal zu erlauben ist sicherlich klüger. Dann die genaue Eingrenzung von A-Z für die Farbe oder den Farbcode mit 3 oder 6 Zeichen. Jap, das hatte ich komplett übersehen. Diese Variante habe ich gerade im aktuellen Release eingebaut.
Da gibt es noch einige andere Bugs, ich muss sie mal alle sammeln, sind doch einige die da zusammenkommen. Melde mich mal damit.
ja klar, her damit, evtl können wir sie gemeinsam lösen. Gerne als PM oder hier als neuer Feedback-Beitrag.
@Sheogorath
Jap, auch diese Regel passt genau. Sie liefert aber zu viele Ergebnisse, bei langen Texten könnte das Performance kosten. Man müsste sie etwas vereinfachen.
@Arano
Auch diese Regel funktioniert, hat aber einen mini Fehler im Ergebnis, wenn ein Farbcode statt Farbname angegeben wird (wie z.B. ###ff9933. Den hatte ich allerdings in der ersten Version im Beispieltext oben auch nicht erwähnte, also meine Schuld).
ich habe auch was anzubieten: /(]+?)\|(.+?))/g (oh, noch ein Bug !?)
Nein, ich filtere im normalen Text einige Zeichen einfach raus. Man muss schon die Code-Tags für solche Dinge nutzen.
Noch mal vielen Dank für die Lösungen. Die nächste Hilfeanfrage bei Regular Expressions wird sicherlich kommen
Gruß
Frank