Regex
Jörg
- regex
0 Der Martin0 Jörg
Hallo,
habe ich einen Denkfehler bei dieser Regex, denn sie funktioniert nocht ganz, wie gewünscht:
/[\/?[li|ul|td|tr|table|code|quote|list|ol)]]$/
Gesucht sind alle öffnenden, sowie schließenden BBcodes am Stringende.
Daher dachte ich.
[ : soll vorkommen
\/? : Slash soll danach vorkommen oder auch nicht
[ : Öffnende Klammer der nachfolgenden Auswahl
[li|ul|td|tr|table|code|quote|list|ol)] : Diese bbcodes dürfen drin stehen
] : Schließende Klammer der Auswahl
$ : Nur Zeilenende interessiert
Ich lese mich gerade neu ein in reguläre Ausdrücke, v ielleicht habe ich da noch etwas missverstande?
Jörg
Hallo Jörg,
[li|ul|td|tr|table|code|quote|list|ol)] : Diese bbcodes dürfen drin stehen
so nicht - die eckigen Klammern stehen für ein Zeichen aus der darin enthaltenen Menge. Dieser Teilausdruck bedeutet also:
ein Zeichen aus der Menge [abcdeiloqrstu)]
Ist die schließende runde Klammer ein Unfall? Denn eigentlich ist die gar nicht so weit weg vom richtigen Pfad: In runde Klammern kannst du tatsächlich einen Teilausdruck klammern, und innerhalb davon geht auch die Oder-Verknüpfung, die du gemeint hast: (Stumpf|Blöd|Wider)sinn
Ich lese mich gerade neu ein in reguläre Ausdrücke, v ielleicht habe ich da noch etwas missverstande?
Bestimmt. Und bestimmt wird das noch öfter vorkommen.
Live long and pros healthy,
Martin
Hallo Martin,
danke für den Hinweis.
Muss denn die eckige Klammer maskiertw erden?
Weil das hier scheint dann zu funktionieren:
/\[\/?(li|ul|td|tr|table|code|quote|list|ol)\]$/
Jörg
P.S:
Ist die schließende runde Klammer ein Unfall?
Wenn schon, dann ein freud'scher ebensolcher 😉
Hallo Jörg,
Muss denn die eckige Klammer maskiertw erden?
wenn sie nicht die Regex-Sonderbedeutung "Kennzeichnung einer Zeichenklasse" haben soll, ja.
Weil das hier scheint dann zu funktionieren:
/\[\/?(li|ul|td|tr|table|code|quote|list|ol)\]$/
Genau: Die eckigen Klammern sind "wörtlich" gemeint und müssen deshalb mit einem Backslash maskiert werden, damit sie ihre Sonderrolle verlieren. Bei der schließenden Klammer geht's auch ohne, glaube ich, aber das finde ich unsauber.
Ist die schließende runde Klammer ein Unfall?
Wenn schon, dann ein freud'scher ebensolcher 😉
*fg*
Live long and pros healthy,
Martin
Hallo Martin,
dann danke für die Hilfe 👍
Jörg